关于LINQ,SqlDataReader, DataSet 以及LINQ Compiled Queries的性能对比
大恐龙 发表于 2009年2月 9日 05:18
开发web程序,性能为王,web应用就是要使用最简单的方法,最廉价的应用实现密集的计算,最近在用asp.net mvc写一个帖吧程序,喜欢mvc的不是为了别的,URL比较好看,终于可以像struts一样实现: http://doamin/board-11-page-1-0 这样比较漂亮的URL了。
遇到Linq,一直都对这样东西不以为然,当年就及其唾弃hibernate这样的架构,可能开发一般的企业应用可能比较适合,但是肯定不适合web,还不如用JDBC+类似JCS的key value缓存,主要是为了满足部分知识面窄的程序员搭车的需要。不过遇到了Linq不得不研究一下,因为不调查就没有发言权,试着做了几个demo,发现比asp.net MVC还是好很多的,写model比较顺手,Controller的编写也比较符合个人喜好。Html.Action和Struts里很像,很神奇的是URL的匹配模式可以自动转换,让匹配不到RouteMap规则的时候会自动变成?board=11&page=1,这个喜欢。
使用.net的原应就是.net的运行效率高java太多,一台windows的承受负荷比linux+jsp要高很多,在上一篇文章《.net的运行效率问题》讨论过。当然开发团队的素质还是决定性的,再好的架构都可能被写成焦油坑式的程序。看到一篇文章,对linq等几种数据访问的性能进行了对比:
Performance benchmarks for LINQ vs. SqlDataReader, DataSet - LINQ Compiled Queries: Part 2
我们这里只看数据,争论没用,用benchmark说话:
******************************
Run : 1
SQL Data Reader: 1,582 ms
LINQ to SQL: 6,045 ms
Strongly Typed DataSet: 2,785 ms
LINQ to SQL Compiled: 2,472 ms
******************************
Run : 2
SQL Data Reader: 1,556 ms
LINQ to SQL: 5,855 ms
Strongly Typed DataSet: 2,696 ms
LINQ to SQL Compiled: 2,432 ms
******************************
Run : 3
SQL Data Reader: 1,553 ms
LINQ to SQL: 5,859 ms
Strongly Typed DataSet: 2,730 ms
LINQ to SQL Compiled: 2,418 ms
-------------------------------------------------------------------
Data Access Type Run 1 Run 2 Run 3 Average
SQL Data Reader 1,582 1,556 1,553 1,563
LINQ to SQL 6,045 5,855 5,859 5,919
Strongly Typed DataSet 2,785 2,696 2,730 2,737
LINQ to SQL Compiled 2,472 2,432 2,418 2,440
-------------------------------------------------------------------
SQL Data Reader Breakdown
378.69% faster than LINQ to SQL
175.11% faster than Strongly Typed DataSet
156.11% faster than LINQ to SQL Compiled
-------------------------------------------------------------------
LINQ to SQL Breakdown
378.69% slower than SQL Data Reader
216.26% slower than Strongly Typed DataSet
242.58% slower than LINQ to SQL Compiled
-------------------------------------------------------------------
Strongly Typed DataSet Breakdown
175.11% slower than SQL Data Reader
216.26% faster than LINQ to SQL
112.17% slower than LINQ to SQL Compiled
-------------------------------------------------------------------
LINQ to SQL Compiled Breakdown
156.11% slower than SQL Data Reader
242.58% faster than LINQ to SQL
112.17% faster than Strongly Typed DataSet
比较起来,Data Reader还是最高效的,DataSet次之, LINQ to SQL Compiled还行,LINQ就不要用了。
再次证明了程序越干净越好。

原创作品,转载请
Tags:













![[Valid RSS]](http://www.w3cool.com//images/valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://www.w3cool.com//images/valid-atom.png)





