在 Solaris、OpenSolaris 和 Linux 操作系统上运行 NetBeans 项目时,将会自动运行 C/C++ 性能分析工具。性能分析工具使用运行项目的操作系统中所运行的外部工具,收集有关项目运行时的信息。Windows 或 Mac 平台上不提供收集详细信息所需的工具。
本教程使用在具有 Sun Studio 工具且基于 SPARC 处理器的 Solaris 系统上运行的项目。不过,Solaris 平台上并不要求使用 Sun Studio 工具集合,因为性能分析工具也可以使用 Solaris DTrace 实用程序获取运行程序的相关信息。如果使用的是 OpenSolaris 操作系统,可通过包管理器或在终端窗口中使用 pkg install sunstudio 命令,方便地安装 Sun Studio 软件。
如果您使用的是 Windows 或 Mac,并且您可以访问某个运行 Solaris、OpenSolaris 或 Linux 的系统,请注意,您可以在 Windows 或 Mac PC 上以本地方式运行 IDE,然后进行设置以在 Solaris、OpenSolaris 或 Linux 系统上进行远程开发。远程开发可使您即使在 Windows 中运行 IDE 时也能使用性能分析工具。有关如何进行设置以在远程开发主机上生成项目的详细信息,请参见 C/C++ 远程开发教程。
将 Sun Studio 工具添加到 NetBeans IDE
如果在安装了 NetBeans IDE 之后安装 Sun Studio 工具,或者 Sun Studio 工具未包含在 Path 变量中,则可能需要向 IDE 提供 Sun Studio 工具所在的位置,如以下步骤中所述。如果不使用 Sun Studio 工具,则可以跳过此步骤。
在“添加新工具集合”对话框的“基目录”文本字段中,键入 Sun Studio 工具集合的基目录路径,或使用“浏览”按钮导航至 Sun Studio bin 目录的路径。Sun Studio 很可能会安装在 /opt/sunstudio12、/opt/sun/sunstudio12 或 /opt/SUNWspro 中,具体取决于 Sun Studio 的版本以及操作系统。
如果“开发主机”不是 "localhost",则无法使用“浏览”功能导航至工具目录。对于位于远程服务器上的工具,必须键入其基 bin 目录的完整路径。单击“检查”可使 IDE 检查输入的路径是否对支持的工具集合有效。
将自动填写“工具集合系列”和“工具集合名称”。可以根据需要为工具集合指定不同的名称。
单击“选项”对话框中的“确定”。
创建用于本教程的 C/C++ 项目
为了说明 C/C++ 性能分析功能,我们将通过 IDE 中包含的性能分析演示样例应用程序创建一个新项目。
单击“CPU 使用情况”中的“热点”按钮以显示有关 CPU 时间的详细信息。
随即会打开“每个函数的 CPU 时间”标签,以显示程序的函数以及每个函数使用的 CPU 时间。这些函数按照使用的 CPU 时间顺序列出,使用时间最多的函数将列在最前面。如果程序仍在运行,最初显示的时间是单击图形时消耗的时间。
单击“函数名”列标题以按字母顺序对函数进行排序。
单击“CPU 时间(排除)”以按各个函数使用的时间顺序对函数进行排序。
请注意两列 CPU 时间之间的不同之处。“CPU 时间(包含)”显示从进入函数到退出函数所花费的总 CPU 时间,其中包括列出的函数调用的所有其他函数花费的时间。“CPU 时间(排除)”只显示特定函数使用的时间,不包括该函数调用的任何函数所花费的时间。
单击“CPU 时间(包含)”列标签以将最耗时的函数置于最顶端。请注意,work_run_usrcpu 函数的 CPU 时间为 5.994(排除)和 6.034(包含),这意味着该函数调用的其他函数实际只使用了很少的 CPU 时间,而 work_run_usrcpu 函数本身使用了大部分时间。
将鼠标光标悬停左旁注中的数字上。对于在“每个函数的 CPU 时间”标签中显示的函数排除和包含 CPU 时间,这些数字的度量是相同的。这些度量进行了四舍五入以占用更少空间,但将鼠标移到这些数字上时将显示未进行四舍五入的值。在 common.c 源文件中,还会显示 CPU 消耗时间行(如在 work_run_usrcpu 函数中执行计算的 for 循环)的度量。
将时间过滤器开始时间更改为 0:40,方法是键入时间并按 Enter 键,或者使用箭头滚动到相应的秒数。图形指示器将发生变化,如同在数据过滤控件上移动控柄时一样。如果拖动控柄,将更新“每个函数的 CPU 时间”标签中的“时间过滤器”设置以保持一致。更重要的是,将更新为表中的函数显示的数据以反映过滤器设置,以便仅显示在该时间段内使用的 CPU 时间。
查看 CPU 使用情况和内存使用情况指示器的 0:00 到 0:40 秒时间段,可以看到单个线程正在执行某个使用 CPU 时间和内存的活动。此时间段对应于串行演示部分,主线程先在文件中写入数据,然后再执行一些计算。在程序等待用户按 Enter 键时,CPU 和内存使用率将会减少,线程数保持为 1 个。
向右滑动时间滑块,以便看到线程数增加到 3 的两个点。
约 40 秒处的线程数增加对应于项目运行的并行演示部分,此时主线程启动两个额外的线程以并行执行文件写入和计算任务。此部分在 50 秒标记后不久结束。请注意,此阶段的内存和 CPU 使用率比较高,但完成两个任务的时间要少得多。