我正在分析一些用 C 编写的数字代码(分析器是 Instruments,编译器是clang
在 Mac OSX 10.11.6 上)。多达 77.3% 的运行时间花费在_platform_memmove$VARIANT$Haswell
.
在汇编输出中,上面的函数被调用DYLD-STUB$$memcpy
。然而,我没有memcpy
在我的 C 代码中(我确实有一些malloc
虽然)。
再深入一点,好像是汇编命令rep
负责占用这么多时间。从this帖子,看来rep
没有做任何有用的事情。为什么编译器要插入它?以及在哪里memcpy
是从哪里来的?
我也尝试编译-g
, 但是之后_platform_memmove$VARIANT$Haswell
不再几乎所有时间都狼吞虎咽了。
经过更多搜索后,我发现了问题:我将一个结构传递给一个函数,该函数每次都会被复制,因此memcpy
.
我更改了该函数以接受指向该结构的指针,这将我的代码速度提高了 5 倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)