项目的两个独立数据访问层 (DAL) 的比较

Posted

技术标签:

【中文标题】项目的两个独立数据访问层 (DAL) 的比较【英文标题】:Comparison of two separate Data Access Layers (DALs) of a project 【发布时间】:2015-02-10 06:17:05 【问题描述】:

我有一个项目的两个单独的 DAL,我想比较它们,看看哪个 DAL 在性能方面更好。我想到的性能指标是内存、查询的执行时间等。 我遇到的问题是:

1) 我使用了 Visual Studio Profiler 并生成了两个报告,但在某些情况下,两个项目共有的值不匹配。(我已经读过这应该归咎于这个工具)

2) 我在两个 DAL 中都有一个插入方法,我想比较其性能,所以当我使用比较报告选项时,它不显示值,因为比较的是不同项目中的方法。

对我可以使用的方法的任何建议都会有所帮助。

另外,就我而言,分析是判断应用程序性能的唯一方法吗?

【问题讨论】:

【参考方案1】:

分析工具通常会严重扭曲测量结果,因此您得到的结果不一致也就不足为奇了。

我建议只使用 Stopwatch 来测量一个循环,假设通过每个 DAL 进行 100000 次数据库访问操作。您可以测量每次操作的平均时间,以及总的测试持续时间。

当循环运行时,让 Perfmon 显示 CPU 的计数器,.NET CLR Memory\# Bytes in all heaps.NET CLR Memory\% Time in GC。从数据库中测量事务吞吐量也很有用,例如 MSSQL$SQLEXPRESS\Transactions/secMSSQL$SQLEXPRESS:SQL Statistics\Batch Requests/sec(假设您使用 SQL Express;其他 DBMS 通常也提供类似的计数器)。

我认为这应该给你足够的信息来决定。

【讨论】:

秒表真的很有帮助。如果我想查看执行查询所花费的时间,您能否提出类似的解决方案??

以上是关于项目的两个独立数据访问层 (DAL) 的比较的主要内容,如果未能解决你的问题,请参考以下文章

Zend 框架数据访问层 (DAL)

1.1 DAL数据访问层

数据访问层DAL

DAL 层:EF 4.0 或带有存储过程的普通数据访问层

如何将数据从表示层传递到业​​务逻辑层? (ASP.NET MVC 5)

一般网站项目结构