c - 在读取内存时递增变量

标签 c memory gcc glibc strcat

当我通读 glibc 源代码时,我在 strcat.c 中发现了这个有趣的注释。 任何人都可以解释这种优化是如何工作的吗?

/* Make S1 point before the next character, so we can increment
         it while memory is read (wins on pipelined cpus).  */
      s1 -= 2;

      do
        {
          c = *s2++;
          *++s1 = c;
        }
      while (c != '\0');

最佳答案

流水线 CPU 可以并行执行某些操作。例如,它可以增加 S1 的地址,同时从它过去指向的地址读取。

关于c - 在读取内存时递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089199/

相关文章:

c - OpenMP 性能不佳

c++ - 如何在 C++ 中将十六进制转换为 IEEE 754 32 位 float

actionscript-3 - 离开和重新访问场景时,任何用户输入的更改都保持不变。能做到吗?

c++ - 在 qt 中将 QMAKE_CXXFLAGS += -std=c++11 添加到 .pro 文件不起作用(在 linux 12.04 上)

gcc - 将c++目标文件链接到c目标文件

c++ - 负数的strtoul

c - 我的 Sublime Text 构建系统,在当前文件夹中运行 build.sh

c++ - 首先创建字符串然后通过 move 语义将其添加到 vector 或在 vector 中创建元素是否有效?

c - 让两个指针指向同一个内存块的正确方法

c - 相同的 FLT_EVAL_METHOD,GCC/Clang 中的不同结果