C# 并行调用能否降低探查器的速度?

C# 并行调用能否降低探查器的速度?,c#,performance,parallel-processing,profiling,C#,Performance,Parallel Processing,Profiling,我的任务是找出是什么让我的应用程序变得如此缓慢。我决定试一试Redgate的蚂蚁剖析器。在运行它时,大多数热点都包含有循环,原始开发人员将其编写为Parallel.For()loops 为了看看它会有什么效果,我用标准for循环替换了它们,分析器加快了几秒钟。但是,在没有分析器的情况下,使用一个简单的DateTime.Now测试这样一个循环的开始和结束之间的差异,表明Parallel.For()循环的速度是前者的两倍多 在尝试使用并行类时,是否可能通过探查器运行代码会造成人为瓶颈?问题是,在执行

我的任务是找出是什么让我的应用程序变得如此缓慢。我决定试一试Redgate的蚂蚁剖析器。在运行它时,大多数热点都包含有循环,原始开发人员将其编写为
Parallel.For()
loops

为了看看它会有什么效果,我用标准for循环替换了它们,分析器加快了几秒钟。但是,在没有分析器的情况下,使用一个简单的
DateTime.Now
测试这样一个循环的开始和结束之间的差异,表明
Parallel.For()
循环的速度是前者的两倍多


在尝试使用并行类时,是否可能通过探查器运行代码会造成人为瓶颈?

问题是,在执行并行操作时,探查器会对所有线程进行采样,这会使常规探查器的性能下降越大,线程越多。

给我的消息。在将来查看分析器结果时,我会记住这一点。谢谢@KChaloux您可能还希望确保您使用的是侵入性较小的评测模式:如果您不一定需要查看行级时间,则切换到方法级;如果您只需要查看源代码,那么也可以设置相应的分析模式。分析程序的主要目的是查找缓慢性错误,而不是快速。@MikeDunlavey我意识到这一点。问题是,有了分析器,程序运行得更快,没有分析器,程序运行得更慢,产生的差异取决于所使用的工具,而不是代码本身的瓶颈。这就像是假阳性。