Meh*_*ANI 7 .net c# optimization profiler profiling
编辑1
我根本不排除这可能是由使用Profiler的一些非常基本的副作用引起的(我的"常规"项目中的一些错误设置)
我想在我的应用程序中改进计算时间,所以我决定进行彻底的分析分析.所以我刚刚启动了.Net内存分配配置文件来分析我的应用程序.
我完全惊呆了,看着计算速度提高了20倍!
应用程序包括从带有BackgroundWorkers的二进制文件读取数据,处理它们,
并将结果存储到MSSQL DB中.每轮通常需要20秒,而分析它几乎需要1秒.我检查并确保两种情况下结果一致.
一个.Net实验的朋友告诉我,探查器优化了线程并"以某种方式"找到了通过线程锁和瓶颈的方式,但我简直不敢相信.
所以我的问题是:
编辑2
我知道这听起来很疯狂,令人难以置信.我自己仍然非常怀疑.但它是真的.
在分析器运行时,SAME代码运行得非常快.我使用SAME测试数据,并观察SAME计算输出.我无法给出一个简单的复制项目,因为它是一个相对较大的框架.我正在使用Visual Studio 2010 Profiler.
我将尽可能多地提供关于流程的详细信息,并且一旦发现它就会发布一条线索.
定期运行日志:
03/23/2011 18:04:34 | 180434.621 | 模拟集[5] - [1] - [5 PC-1 0 [SET 1/48]
03/23/2011 18:05:01 | 180501.271 | 处理时间:00:00:26.6515244
等
Profiler运行LOGS:
03/24/2011 11:38:15 | 113815.592 | 模拟集[5] - [1] - [5 PC-1 0 [SET 1/48]
03/24/2011 11:38:17 | 113817.350 | 处理时间:00:00:01.7581005
等
编辑3:线索
确定好的我的坏(我在编辑1上警告这种可能性,因为这太令人难以置信了.抱歉)@Watts建议检查我是否处于调试或发布模式.我已经做过了.但@SnowBear指出有两个不同的东西:运行调试版软件和在调试器下运行软件我确保在Build and Execution中的活动配置是RELEASE是VS2010.但是,由于我刚刚疯狂,我决定直接从bin/release中的exe文件启动应用程序.而且......过程每个过程需要1秒钟.运行Profiler会使您退出调试模式(无论您处于发布模式还是调试模式),这让我感到困惑.
感谢All Case Closed.
使用调试器运行会禁用jit优化.如果你运行exe,通常会启用jit优化.将调试器附加到这样一个正在运行的应用程序允许您使用启用的优化进行调试.
Release-Build vs Debug-Build有两个结果:
归档时间: |
|
查看次数: |
1197 次 |
最近记录: |