问题标签 [intel-vtune]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1215 浏览

c++ - 应该为分析设置哪个编译选项?

我需要通过 VC++ 分析使用英特尔编译器编译的应用程序。我正在使用 VTune 来分析我的代码。

我的理解是,在发布模式下,我将没有探查器在调试模式下分析我的代码所必需的调试信息,分析的结果将不相关。

我应该怎么办 ?是否可以在发布模式下添加调试信息?如何设置此模式?

如果是这样,我还会从所有优化(内联等)中受益吗?

0 投票
3 回答
1585 浏览

delphi - Delphi 是否值得考虑使用 VTune?

通过分析工具的所有问题,我惊讶地发现了我以前从未听说过的英特尔的 VTune 。700 美元,比AQTime还要贵。

但是在我决定为 AQTime 投入大笔资金之前,有没有人使用过 VTune for Delphi,如果是这样,你认为它有什么好处可以使它成为比 AQTime 和其他 Delphi 分析工具更好的选择吗?在外面吗?

0 投票
3 回答
707 浏览

performance - 测量选定循环的执行时间

我想测量 C 程序中选定循环的运行时间,以便查看在这些循环中花费了执行程序(在 linux 上)的总时间的百分比。我应该能够指定应该测量性能的循环。在过去的几天里,我尝试了几种工具(vtune、hpctoolkit、oprofile),但似乎都没有。他们都发现了性能瓶颈,并只是展示了那些时间。那是因为这些工具只存储高于阈值(~1ms)的时间。因此,如果一个循环花费的时间少于此时间,则不会报告其执行时间。

gprof 的基本块计数功能取决于旧编译器中现在不支持的功能。

我可以手动编写一个简单的计时器使用gettimeofday或类似的东西,但在某些情况下它不会给出准确的结果。例如:

现在在这里我想测量花费在内部循环中的总时间,我必须gettimeofday在第一个循环中调用。所以gettimeofday它自己会被调用 1000 次,这会引入自己的开销,结果会不准确。

0 投票
1 回答
319 浏览

optimization - 英特尔汇编器优化

我目前正在尝试针对自制语言优化自制编译器发出的代码。

我已经尝试过英特尔 VTune,看看瓶颈在哪里:http ://www.imada.sdu.dk/~sorenh07/misc/vtune-assembly-optimization.png

我发现一个“subl”指令负责运行 30-90 秒的程序中超过 38% 的时钟滴答声,这让我印象深刻!谁能解释为什么?

对于未使用 icc 编译的程序,VTune 中的“优化报告”功能显然不存在。是否存在建议优化汇编代码的程序?(也就是说,不是来自高级语言的代码)。

0 投票
4 回答
652 浏览

c++ - 需要分析帮助

我有一个分析问题 - 假设我有以下代码......

如果我在 vtune(或其他分析器)下运行它,则很难发现任何问题。所有热点将出现在标记为“//很多代码”的部分中,该部分已经优化。badly_written_function() 不会以任何方式突出显示,即使它是所有麻烦的原因。

vtune 是否有一些功能可以帮助我找到问题?

是否有某种模式可以让我找到 badly_written_function()及其所有子功能所花费的时间?

0 投票
3 回答
2787 浏览

c++ - vtune - 没有可用的符号

我过去用过几次vtune,通常没有太多麻烦。不幸的是,每次使用之间的间隔通常很长,以至于我每次都忘记了如何使用它的某些方面。我知道需要以某种方式存储行号和符号信息。我认为只需要使用“程序数据库”(/Zi)编译您的 exe,但我刚刚做了一个采样,发现 vtune 报告没有可用的符号。

有什么我错过的吗?

0 投票
1 回答
360 浏览

winapi - 如何测量应用级别基准测试的 Windows API 代码覆盖率

我的工作涉及使用我没有来源的第三方工具进行系统级性能测试。我也在测试 Windows,可以使用调试符号但不能使用 Windows 源代码。我想要一种定量的方式来描述我的测试涵盖的主机操作系统的区域。有两个重要步骤:确定我想要查看的 DLL 和函数,然后确定如何分析对它们的调用。

覆盖的想法:

  • 来自 kernel.dll、ntdll.dll、user.dll 等的所有函数……主要的内置模块。这可能是大量的矫枉过正,并且可能会发现许多仅与弃用功能有关的差距。
  • 只是目标应用程序使用的任何 DLL 的模块名称。没有那么详细,但也不太可能错过目标应用程序中的关键功能。
  • 应用程序特定模块,例如 DirectX 10 应用程序的 d3d10.dll。
  • 基本块。我猜这将是一篇博士论文的工作量。

剖析思路:

  • 对我的所有测试运行 VTune 调用图分析。这种工作,但似乎提供了一个有限的视图来了解实际调用了哪些内置函数。
  • 使用 Pin 或 DynamoRIO 等动态检测应用程序。可能的缺点:慢。
  • 使用 WinDbg 接听电话。不确定这是否比 Pin 更容易或更快。
  • 使用 IDA Pro 等反汇编工具进行静态分析。

在 Windows 上是否有任何符合这些方面的已发表作品?您是否曾经使用过其中一种工具来进行足够多的挂钩或日志记录,以至于您可以推荐它?

0 投票
3 回答
3134 浏览

performance - 如何生成符号信息以用于 Linux 版本的英特尔 VTune 放大器?

我正在使用 Intel VTune Amplifier XE 2011 来分析我的程序的性能。我希望能够在分析结果中查看源代码,文档说我需要提供符号信息。不幸的是,它没有说明在编译我的程序时如何生成该符号信息。在 VTune 的 Windows 版本中,我所要做的就是提供 Microsoft Visual Studio 将生成的“.pdb”文件。我可以使用 g++ 创建类似的文件来提供此符号信息吗?

0 投票
3 回答
130 浏览

c++ - 分析器报告的时间与真实时间 - 为什么会出现差异?

我有两块代码执行相同的操作。一个是我自己写的,一个是第三方写的。它们都被编译成一个可执行文件。第三方代码似乎能够比我的更快地完成它的工作。与我的 500 次相比,它每秒可以执行 1,500 次操作。然后我在 VTune 中运行可执行文件,使用调用图分析选项,希望这能揭示我在哪里浪费时间。不幸的是,VTune 诊断程序显示了它认为每个函数需要的微秒数,声称我的函数和第三方函数每次调用都需要大约 0.002 秒这对于我的代码来说似乎是正确的,但与我对第三方代码速度的(手动)测量完全不一致。

这怎么可能发生?

编辑:这两个代码块都很大,并调用它们自己的复杂子函数树。

编辑:我应该指出第三方代码是纯 C++ 而我的代码本质上是刚刚在 C++ 编译器中编译的 C 代码。

编辑:VTune 是一个非常复杂的包,其中包含我不理解的大量配置选项。是否有一些设置可以减少这种不准确性?

0 投票
1 回答
514 浏览

optimization - vtune 与 mingw

我正在尝试将 vtune 与在 Windows 中使用 mingw 编译的应用程序一起使用。当我尝试查看源代码信息时,vtune 说生成的可执行文件中的不是行信息。我正在使用 -g 选项进行编译,所以我不知道问题出在哪里。所以问题是:

  • 是否可以在 Windows 中使用 mingw 编译的程序进行分析?看起来一切都为 MS-VC 做好了准备,但不是 mingw。

  • 如果是这样,是否需要更改对象格式(coff、xcoff、DWARF、....)?也许如果有人发布一个例子,那将是有价值的。