相关疑难解决方法(0)

基准测试Linq2SQL,Subsonic2,Subsonic3 - 还有其他想法可以让它们更快吗?

我正在与Subsonic 2合作超过3年......

在Linq出现,然后是Subsonic 3之后,我开始考虑转移到连接到sql的新Linq期货.

我必须说我开始移动并用SubSonic 3移植我的亚音速2,很快我就发现速度太慢而我不相信 - 并开始所有的测试.

然后我测试Linq2Sql并看到延迟 - 将它与Subsonic 2进行比较.

我的问题是,特别是linq2sql和即将推出的dotnet版本4,我还能做些什么来加快速度呢?linq2sql设置或类上还有什么,而不是我用于我的烦恼的代码

我在这里放置了我进行测试的项目,以及结果的屏幕截图.

我如何进行测试 - 以及我的措施的准确性.

我只使用我的问题谷歌chrome,因为我很难在这里展示我用更复杂的程序做的很多其他措施.这是最简单的一个,我只测量数据读取.我怎么能证明这一点.我做了一个简单的Thread.Sleep(10秒),看看我是否在Google Chrome Measure上看到了10秒,是的,我看到了.

http://www.planethost.gr/GoogleChromeFastSpeedMesure.gif

这里有更多的测试,这个Sleep thead看看Chrome实际上是什么.

10秒延迟
100 ms延迟
零延迟

只有一个小的15毫秒可以搞定,它是如此之小,与我不关心的其他测试相比.

所以我衡量的是什么

我只测量通过每种方法读取的数据 - 没有计算数据或数据库延迟,或任何磁盘读取或类似的东西.稍后在带有结果的图像上,我显示测量中没有磁盘活动.
请参阅此图像以查看我真正测量的内容以及这是否正确

为什么我选择这种测试

它很简单,它是真实的,而且接近我真正的问题,我发现实际程序中亚音速3的延迟与实际数据有关.

现在让我们测试一下dals

首先看这个图像 我对每个方法都有4-5个调用,一个接一个.

结果是.对于100次循环,请求5行,一行不存在,近似...

简单的adonet:81ms
SubSonic 2:210ms
linq2sql:1.70sec
linq2sql使用CompiledQuery.Compile:239ms
亚音速3:15.00sec(哇 - 极慢)

该项目 http://www.planethost.gr/DalSpeedTests.rar


任何人都可以确认这个基准,或进行任何优化来帮助我吗?

其他测试

有人在这里发布这个链接http://ormbattle.net/(然后删除它 - 不知道为什么)在这个页面你可以找到一个非常有用的高级测试,除了我在这里的亚音速2和亚音速3!

优化

我在这里真正要问的是,如果有人能够如何优化DAL,不是通过更改测试代码,而是通过更改每个dal上的代码和设置.例如...

优化Linq2SQL

我开始搜索如何优化Linq2sql并找到 这篇文章,也许更多的存在.

最后,我从该页面开始运行,并使用它们优化代码.速度从1.70开始接近1.50秒....大幅改善,但仍然缓慢.

然后我发现了一种不同的方式 - 同样的想法文章,哇!速度很快. 使用CompiledQuery.Compile的这个技巧,1.5秒的时间现在是239ms. 这是预编译的代码......

Func<DataClassesDataContext, int, IQueryable<Product>> compiledQuery …
Run Code Online (Sandbox Code Playgroud)

subsonic performance benchmarking subsonic3 linq-to-sql

7
推荐指数
1
解决办法
941
查看次数