STi*_*eTT 18 .net c# parallel-processing performance profiling
我正在调查特定操作完成所需的时间.操作如下:
Parallel.ForEach(items, item => SaveScheme(item));
Run Code Online (Sandbox Code Playgroud)
该SaveScheme方法适用于数据库:执行一些查询并处理信息.items收集中的元素数量可以足够大.
当我运行此操作时,大约需要20-40秒才能完成.但是当我打开一个配置文件运行它时,它只需要3秒!
我没有找到有关此问题的任何信息.我唯一的猜测是,分析Parallel.ForEach创建的线程多于没有它的线程,但我不确定,即使它是真的,我也不知道如何处理它.
那么,为什么会发生这种情况呢?当我在没有分析的情况下运行应用程序时,我怎样才能达到这种性能?
UPD.Parallel与此无关:我用简单测试,foreach操作仍然在3秒内完成!
STi*_*eTT 35
我找到了答案:
原因是当您在Visual Studio中运行应用程序时,调试器将附加到它.使用分析器运行它时,不会附加调试器.
如果您尝试单独运行.exe,或通过IDE使用"Debug> Start Without Debugging"运行程序(或者只需按Ctrl + F5),应用程序的运行速度应与分析器的运行速度一样快.
我之前没有找到它,因为我认为原因是并发性.
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |