本节介绍如何使用常规硬件计数器查看对函数执行了多少指令。
选择 "Overview"(概述)页面,然后启用 "General Hardware Counters"(常规硬件计数器)下名为 "Instructions Executed"(执行的指令)的 "HW Counter Profiling"(HW 计数器分析)度量。
返回到 "Functions"(函数)视图,然后单击 "Name"(名称)列标题以按字母顺序排序。
向下滚动以查找函数 compute()、computeA()、computeB() 等。
请注意,除 computeB() 和 computeF() 之外的所有函数都具有大致相同的 "Exclusive Total CPU time"(独占总 CPU 时间)和 "Exclusive Instructions Executed"(独占 执行的指令)值。
选择 computeF() 并切换到 "Source"(源)视图。通过双击 computeF(),可以一步执行此操作。
computeF() 中的计算内核是不同的,因为它调用函数 addone() 来加一,而其他 compute*() 函数则直接执行加法。这就解释了为什么其性能与其他函数的不同。
在 "Source"(源)视图中上下滚动以查看所有的 compute*() 函数。
请注意,所有的 compute*() 函数(包括 computeB())都显示数量大致相等的已执行指令。而 computeB() 显示截然不同的 CPU 时间成本。
下一节帮助说明为什么 computeB() 的总 CPU 时间要长得多。