我只想知道std::swap()
是如何实现的?
它是为临时变量分配RAM,还是简单地使用CPU寄存器来完成所有事情?
发布于 2019-04-18 04:24:07
这完全取决于目标处理器的编译器。它在一台机器上的编译方式可能与另一台不同。有些CPU(如果不是大多数的话)有一个XCHG指令来使用寄存器交换,而不需要第三个临时寄存器;然而,需要编译器来决定相应地进行优化。我想,即使没有使用,编译器在发布模式(启用优化)时仍然会尝试使用寄存器进行简单的数字或布尔交换。即使您可以强迫编译器在一个平台上使用寄存器,它也没有理由在所有平台上都使用相同的寄存器。除非您想要检测体系结构并编写自己的程序集(对于最好的兼容性和支持来说,这是一个整洁但却很糟糕的主意,相信我lol),否则我建议不要对其进行微优化,让编译器来完成它的工作。
https://stackoverflow.com/questions/55739092
复制相似问题