Oracle® Developer Studio 12.5:性能分析器教程

退出打印视图

更新时间: 2016 年 6 月
 
 

了解硬件计数器指令分析度量

本节介绍如何使用常规硬件计数器查看对函数执行了多少指令。

  1. 选择 "Overview"(概述)页面,然后启用 "General Hardware Counters"(常规硬件计数器)下名为 "Instructions Executed"(执行的指令)的 "HW Counter Profiling"(HW 计数器分析)度量。

  2. 返回到 "Functions"(函数)视图,然后单击 "Name"(名称)列标题以按字母顺序排序。

  3. 向下滚动以查找函数 compute()computeA()computeB() 等。

    image:性能分析器的包含指令分析度量的 “Functions“(函数)视图

    请注意,除 computeB()computeF() 之外的所有函数都具有大致相同的 "Exclusive Total CPU time"(独占总 CPU 时间)和 "Exclusive Instructions Executed"(独占 执行的指令)值。

  4. 选择 computeF() 并切换到 "Source"(源)视图。通过双击 computeF(),可以一步执行此操作。

    image:computeF 的性能分析器中的 “Source“(源)视图

    computeF() 中的计算内核是不同的,因为它调用函数 addone() 来加一,而其他 compute*() 函数则直接执行加法。这就解释了为什么其性能与其他函数的不同。

  5. 在 "Source"(源)视图中上下滚动以查看所有的 compute*() 函数。

    请注意,所有的 compute*() 函数(包括 computeB())都显示数量大致相等的已执行指令。而 computeB() 显示截然不同的 CPU 时间成本。

    image:性能分析器的显示 computeB 函数的高总 CPU 的 “Source“(源)视图

    下一节帮助说明为什么 computeB() 的总 CPU 时间要长得多。