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

时间:2016-08-23 12:50:15

标签: c macos profiling

我正在分析用C编写的一些数字代码(在Mac OSX 10.11.6上,profiler是Instruments,编译器是clang)。在_platform_memmove$VARIANT$Haswell中花费了77.3%的运行时间。

在汇编输出中,DYLD-STUB$$memcpy调用上述函数。但是,我的C代码中没有memcpy(我确实有malloc个。)

更深入,似乎汇编命令rep负责占用这么多时间。从this帖子开始,似乎rep没有做任何有用的事情。为什么编译器会插入它? memcpy来自何处?

我也尝试使用-g进行编译,但是_platform_memmove$VARIANT$Haswell几乎不会在任何时候都在吞噬。

1 个答案:

答案 0 :(得分:5)

经过一些搜索,我发现了问题:我正在将一个结构传递给一个函数,每次都会复制它,因此memcpy

我将函数更改为接受指向结构的指针,这会使我的代码加速5倍。