我使用Intel 11.1构建了一个Fortran代码。我使用-p选项构建它以生成分析数据。当我检查这些结果时,会出现一些不属于我的代码的例程。我猜他们被英特尔放在那里。包括:
__powr8i4
__intel_new_memset
__intel_fast_memset
__intel_fast_memset.J
__intel_fast_memcpy
__intel_new_memcpy
__intel_fast_memcpy.J
还有其他人。当我在没有优化的情况下构建代码时,代码不会花费太多时间。除了结果显示__powr8i4在3.3%的时间内被使用。但是,当我使用优化构建代码时,这个数字可以达到约35%。我似乎无法找出这些例程是什么,但它们使我的结果混乱,因为我想知道在哪里寻找优化我的代码。
答案 0 :(得分:0)
大多数程序在调用子程序(通常是库子程序)时花费了很多周期,所以如果你只看独占(自我)时间,你会看到你所看到的。
现在,如果探查器是“CPU探查器”,它可能会对I / O时间视而不见。这意味着你的程序可能花费大部分时间阅读或写作,但是分析器不会给你任何线索。
许多分析器尝试生成调用图,如果您的程序不包含递归,并且分析器可以访问代码中的所有例程,那么这有助于识别代码中的子例程调用好久没了 但是,如果例程A很大并且在几个地方调用B,则探查器不会告诉您要查看哪行代码。
可能在您完成所有这些操作后,您可能无法做很多事情来加快代码速度。 但是,如果您可以看到数据的某些属性可能会如何影响性能,您可能会发现可以获得进一步的加速。 Profilers无法查看数据。