我们目前正在尝试使用VisualStudio Concurrency Profiler监控c#程序的性能。该程序采用并行处理首先将数据读入BlockingCollection,然后从第二个BlockingCollection将数据写入数据库表。
通常,程序将在四核计算机上使用总共3个线程。但是,当使用并发分析器(这次是在四核虚拟机内)运行时,我们会看到使用二十或三十个线程,以及大量同步(85%)和争用。它还需要四倍的时间才能完成。
有没有人看到类似的行为,或者解释为什么会发生这种情况?可以通过虚拟机而不是并发分析器来解释差异吗?