Tag: profiling

是GNU gprof越野车吗?

我有一个C程序通过函数pi_calcPiItem()调用函数pi_calcPiItem() 600000000次。 因此,要分析我使用GNU gprof的函数所花费的时间。 结果似乎是错误的,因为所有调用都归因于main() 。 此外,调用图没有任何意义: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls Ts/call Ts/call name 61.29 9.28 9.28 pi_calcPiItem 15.85 11.68 2.40 pi_calcPiBlock 11.96 13.49 1.81 _mcount_private 9.45 14.92 1.43 __fentry__ 1.45 15.14 0.22 pow 0.00 15.14 0.00 600000000 0.00 0.00 main Call graph granularity: […]

C程序占77%的时间在_platform_memmove $ VARIANT $ Haswell

我正在分析用C编写的一些数字代码(profiler是Instruments,编译器在Mac OSX 10.11.6上是clang )。 在_platform_memmove$VARIANT$Haswell花费了77.3%的运行时间。 在汇编输出中,上面的函数由DYLD-STUB$$memcpy调用。 但是,我的C代码中没有memcpy (虽然我确实有一些malloc )。 更进一步,似乎汇编命令rep负责占用这么多时间。 从这篇文章来看,似乎rep没有做任何有用的事情。 为什么编译器会插入它? memcpy来自哪里? 我也尝试用-g编译,但是后来_platform_memmove$VARIANT$Haswell几乎没有时间吞噬了。

平均执行时间

有没有什么好的GNU方法如何测量某些命令行程序的平均(最坏情况,最佳情况)执行时间? 我有图像filter,未指定数量的图片,在bash中使用for循环过滤它们。 到目前为止,我正在使用时间 ,但我找不到如何获得一些统计数据的方法。

如何分析组合的python和c代码

我有一个由多个python脚本组成的应用程序。 其中一些脚本正在调用C代码。 应用程序现在运行速度比以前慢得多,所以我想对其进行分析以查看问题所在。 是否有工具,软件包或只是一种方式来分析这样的应用程序? 一个工具,它将遵循python代码到C代码并配置这些调用? 注1:我很清楚标准的Python分析工具。 我特意在这里寻找组合的Python / C分析。 注2:Python模块使用ctypes调用C代码(有关详细信息,请参阅http://docs.python.org/library/ctypes.html )。 谢谢!

如何在Mac OS X上从命令行进行配置?

我正在尝试使用命令行工具在Mac OS X上分析C / C ++代码,我在gcc上使用-pg选项在Linux上运行gprof ,但我似乎无法在Mac上找到gprof ,即使我有一个描述在此页面中: 其他命令行工具(iOS)或其他命令行工具(mac) 。 gprof:Produces execution profiles based on an execution analysis of a program. 我安装了命令行工具,因此可以使用其他命令行工具,如otool和otool 。 我搜索了这个页面( https://apple.stackexchange.com/questions/154289/installing-gprof-on-mac ),说gprof不受支持,但我不确定我什么时候有Apple doc描述工具; 无论如何,我尝试使用brew来下载gprof ,但它没有用。 我发现尝试在Mac上使用带有C ++代码的gprof ,但我没有使用instruments -t输出。 我还在mac os x上发现了profiling c ++ ,但我不想打开Instruments,因为我想自动化一些进程并尝试保持跨平台系统。 如何在Mac OS X上使用gprof? 我使用OS X 10.10。 如何使用或不使用gprof从命令行进行配置文件?

Valgrind是否存在已知的误报问题?

Valgrind是否有任何已知的误报? 我通过fmemopen函数得到’条件跳转或移动取决于未初始化的值’,用C语言编写并用GCC编译。 我能确定这是真的吗? 编辑:抑制文件中是否存在已知问题? 在程序中是否可以做一些事情,这不是真正的错误,但Valgrind会说它们是? 如果存在已知问题,列表会很好。

如何配置Native JNI库

如何配置用C编写的Java Native Interface库? 我知道通常的C分析器,但我的问题是如何分析整个集合,包括调用JVM方法,这可能会减慢程序的速度。

如何告诉gcc使用我自己的函数调用每个_line_代码来检测代码?

例如,有来源: void my_special_debugging_function(const char* function_name, const char* file_name, int line_number); void func1() { func3(); func4(); } void foo() { func1(); if(qqq) { func2(); }; func3(); func4(); for(…) { func5(); } } 它应编译为: void my_special_debugging_function(const char* function_name, const char* file_name, int line_number); void func1() { my_special_debugging_function(“func1”, “prog.c”, 3); func3(); my_special_debugging_function(“func1”, “prog.c”, 4); func4(); my_special_debugging_function(“func1”, “prog.c”, 5); […]

替代-pg与Clang?

我想分析CPU(如果可能的样本),尽可能小的性能影响(因此类似于GCC的-pg ),用Clang编译的二进制文件。 是否有替代方法使用代码检测,或产生类似于gprof的输出?

基于CPU周期计算的C / C ++ Linux x86_64中的分析

我正在使用以下代码来分析我的操作,以优化我的函数中的cpu周期。 static __inline__ unsigned long GetCC(void) { unsigned a, d; asm volatile(“rdtsc” : “=a” (a), “=d” (d)); return ((unsigned long)a) | (((unsigned long)d) << 32); } 我不认为这是最好的,因为即使连续两次通话也给我带来“33”的差异。 有什么建议 ?