gpt4 book ai didi

c - 为什么复杂的 memcpy/memset 更胜一筹?

转载 作者:太空狗 更新时间:2023-10-29 16:25:38 25 4
gpt4 key购买 nike

在调试的时候,经常会踩到memcpy和memset的手写汇编实现。这些通常使用流指令(如果可用)、循环展开、对齐优化等来实现……我最近也遇到了这个 'bug' due to memcpy optimization in glibc .

问题是:为什么硬件厂商(Intel、AMD)不能针对具体情况进行优化?

rep stos


rep movs

被认可,并在他们自己的架构上尽可能快地填充和复制?

最佳答案

我想添加到其他答案中的一件事是 rep movs在所有现代处理器上实际上并不慢。例如,

Usually, the REP MOVS instruction has a large overhead for choosing and setting up the right method. Therefore, it is not optimal for small blocks of data. For large blocks of data, it may be quite efficient when certain conditions for alignment etc. are met. These conditions depend on the specific CPU (see page 143). On Intel Nehalem and Sandy Bridge processors, this is the fastest method for moving large blocks of data, even if the data are unaligned.



[突出显示是我的。] 引用: Agner Fog, Optimizing subroutines in assemblylanguageAn optimization guide for x86 platforms. ,页。 156(另见第 16.10 节,第 143 页)[2011-06-08 版本]。

关于c - 为什么复杂的 memcpy/memset 更胜一筹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com