我正在分析用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
几乎不会在任何时候都在吞噬。
答案 0 :(得分:5)
经过一些搜索,我发现了问题:我正在将一个结构传递给一个函数,每次都会复制它,因此memcpy
。
我将函数更改为接受指向结构的指针,这会使我的代码加速5倍。