Sid*_*awy 21 c# performance 64-bit x86 entity-framework
我的同事昨天发布了这个问题:即使对于微小的DbContext,7秒的EF启动时间.
在获取代码并将其移至单独的解决方案以尽可能地隔离它之后,我发现包含项目的平台目标对EF启动过程的运行时有深远的影响.
当针对x64时,我看到测试需要大约7秒来启动第一个DbContext并且<1秒来启动第二个DbContext(与我的同事的调查结果一致,也是针对x64).但是,当我将平台目标切换到x86时,第一个DbContext旋转时间减少了大约4秒,减少到3.34633秒,而第二个DbContext花费了与x64情况相同的时间.
鉴于此,当针对64位系统和32位系统时,实体框架似乎正在经历一个完全不同的初始化过程.有没有人能够深入了解引擎盖下的内容来解释这个问题?
Lad*_*nka 11
这个问题完全可以重现.我刚刚运行它并使用dotTrace Performance Profiler来收集x86和x64执行的快照.我报告的时间大致相同.但是x64和x86跟踪之间确实没有明显区别 - 除了x64至少需要两倍于x86的时间.
但这是对NUnit测试运行的追踪.通过像控制台应用程序一样运行相同的测试,我得到这样的时间:
x86: 0,6864012, 0,0468001
x64: 1,0608019, 0,0468001
Run Code Online (Sandbox Code Playgroud)
那看起来好多了,不是吗?x86和x64之间仍然存在差异,但对于某些操作,x64代码通常较慢.
此时的问题不在于EF,而在于NUnit及其测试运行器.
编辑:
我做了一些测试.NUnit和Resharper的任务运行器都有这个问题,但它只影响第一次测试.所有其他测试运行得很快.xUnit显示相同的行为.
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |