用到”性能向导“,通过性能报告便于我们快速的发现并找到潜在的性能问题。
首先我们上一段需要改进的代码:
记住,我们的程序需要改成Release版本,因为这里包含了太多的优化信息。
找到”工具栏”->"分析"->"启动性能向导",选中“并发”->"可视化多线程应用程序的行为"。
然后选中我们的程序Test
最后点击完成,如果是第一次使用的话会提示你“是否立即配置符号”,这是因为我们的并行计算用到了window函数,所以我们调试的时候
需要加载这些符号。点击“是”,然后勾选“MicroSoft符号服务器”,点击确定就OK了。
稍等一会,我们会看到三种视图:CPU使用率,线程,内核。
然后我们进入“CPU使用率”,看看情况。
从图中:我们可以获知如下信息:
①:从图中的绿色破浪线可以看出,我们的程序确实是多核计算。
②:并行计算耗时16515ms,平均CPU使用率:39%。,这里要注意,性能剖析器也需要耗费CPU周期,所以执行时间要稍大于实际时间。
然后,我们点击“线程“tab,看看效果
通过点击各个”线程”的绿色小条,然后看下“分析报告”:发现程序被三个task承载执行:主线程(644),辅助线程(4824),辅助线程(1564)。
然后我们点击“可见时间线分析”中的“同步”,看看同步是由谁贡献出来的,清楚的看到Monitor.Enter,这是因为我的代码里面有lock。
而且阻塞时间还是蛮厉害的,这里就是我们可以优化的点。
接下来,我们看看“核心”标签
这个标签给我们展示的是:各个线程是如何的映射到可用逻辑处理器内核的,具体的也没有什么好说的。
刚才也说了,我们程序的Monitor那一块是一个优化点,仔细论证代码,我们发现lock锁是多余的,接下来我们要做的事情就是去掉lock,
然后看看效果: