| 最终修改于 : | 2009年04月03日 04:05 |
评级 |
|
此步骤中,您将运行锁定和等待分析,了解 algorithm_3 中出现标记为 OK 的串行 CPU 时间的原因。
分析锁定和等待
要运行锁定和等待分析,从 Amplifier 的工具栏中选择 Locks and Waits - Where is my application waiting? 并单击 Profile。
Locks and Waits:Bottom-up 窗口提供了以下数据:

可以看到,主线程在等待矩阵变换线程完成。这并不是问题,因为矩阵变换线程正在进行计算,而主线程在等待其完成。
Locks and Waits:Bottom-up 窗口中的第二项会更有趣。这是一个临界区(Critical Section),仅在临界区导致等待时才会出现串行化。双击临界区查看存在等待问题的源代码。

重新生成最终应用程序
回到 Visual Studio* 软件,注释掉 EnterCriticalSection 调用(第 216 行)和 LeaveCriticalSection 调用(第 218 行),重新编译应用程序。
运行最终基准测试
在命令行窗口内运行生成的 matrix.exe。

thorlee
55
状态分数:
5