gpt4 book ai didi

performance - 在不使用第三个变量的情况下交换两个变量是否有意义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:25 24 4
gpt4 key购买 nike

我知道不能使用它们,但是有一些技术可以在不使用第三个变量的情况下交换两个变量,例如

x ^= y;
y ^= x;
x ^= y;

x = x + y
y = x - y
x = x - y

在类里面,教授提到这些在 20 年前很流行,当时内存非常有限,并且今天仍在高性能应用程序中使用。这是真的?我对为什么使用此类技术毫无意义的理解是:

  1. 永远不会成为使用第三个变量的瓶颈。
  2. 无论如何,优化器都会这样做。

那么有没有什么时候不交换第三个变量的好时机呢?它会更快吗?

相互比较,使用 XOR 的方法与使用 +/- 的方法是否更快?大多数体系结构都有一个用于加法/减法和 XOR 的单元,所以这是否意味着它们的速度都相同?或者仅仅因为 CPU 有一个运算单元并不意味着它们的速度都相同?

最佳答案

对于编写普通洗衣机固件的程序员来说,了解这些技术仍然很重要。许多此类硬件仍然在 Z80 CPU 或类似的 CPU 上运行,通常内存不超过 4K 左右。在那个场景之外,正如您所说,了解这些算法“诡计”与没有实际用途一样好。

(尽管如此,我还是想指出,即使对于“常规”应用程序,记住并知道这类东西的程序员往往比那些不会打扰的“同行”更优秀。正是因为后者经常对“无论如何内存都足够大”的态度太过分了。)

关于performance - 在不使用第三个变量的情况下交换两个变量是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26272902/

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