gpt4 book ai didi

c++ - 常用 C++ 优化技术列表

转载 作者:IT老高 更新时间:2023-10-28 21:37:26 36 4
gpt4 key购买 nike

我能否列出一份常见的 C++ 优化实践?

我所说的优化是指您必须修改源代码才能更快地运行程序,而不是更改编译器设置。

最佳答案

我会附和其他人所说的:更好的算法将在性能提升方面获胜。

也就是说,我从事图像处理工作,作为一个问题域可能更棘手。例如,很多年前我有一段代码看起来像这样:

void FlipBuffer(unsigned char *start, unsigned char *end)
{
unsigned char temp;

while (start <= end) {
temp = _bitRev[*start];
*start++ = _bitRev[*end];
*end-- = temp;
}
}

将 1 位帧缓冲区旋转 180 度。 _bitRev 是一个 256 字节的反转位表。这段代码尽可能地紧凑。它在 8MHz 68K 激光打印机 Controller 上运行,打印一张合法大小的纸大约需要 2.5 秒。为了省去你的细节,客户不能忍受2.5秒。解决方案是与此相同的算法。不同的是

  1. 我使用了一个 128K 的表,对字而不是字节进行操作(68K 对字更满意)
  2. 我使用 Duff 的设备展开循环,使其尽可能适合短分支
  3. 我进行了优化以跳过空白单词
  4. 我终于在汇编中重写了它,以利用 sobgtr 指令(减一并在更大的地方分支)并在正确的位置有“自由”的后增量和预减量。

所以 5 倍:没有算法改变。

关键是您还需要了解您的问题领域以及瓶颈的含义。在图像处理中,算法仍然是王道,但如果您的循环正在做额外的工作,请将这些工作乘以几百万,这就是您要付出的代价。

关于c++ - 常用 C++ 优化技术列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653980/

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