std::swap() 是如何实现的?
How is std::swap() implemented?
我只想知道std::swap()
是如何实现的?
它是为临时变量分配 RAM 还是简单地用 CPU 寄存器做所有事情?
这完全取决于目标处理器的编译器。它在一台机器上的编译方式可能与另一台机器不同。有些(如果不是大多数)CPU 有一条 XCHG 指令,可以使用寄存器进行交换,而无需第三个临时寄存器;但是,由编译器决定相应地进行优化。我想即使不使用,编译器在以发布模式(启用优化)构建时仍会尝试使用寄存器进行简单的数字或布尔交换。即使您可以强制编译器在一个平台上使用寄存器,它也没有理由在所有平台上都遵循相同的规则。除非您想检测体系结构并编写自己的程序集(为了获得最佳兼容性和支持,这是一个简洁但糟糕的主意,相信我,哈哈)我建议不要对此进行微优化,而让编译器做它的事情
我只想知道std::swap()
是如何实现的?
它是为临时变量分配 RAM 还是简单地用 CPU 寄存器做所有事情?
这完全取决于目标处理器的编译器。它在一台机器上的编译方式可能与另一台机器不同。有些(如果不是大多数)CPU 有一条 XCHG 指令,可以使用寄存器进行交换,而无需第三个临时寄存器;但是,由编译器决定相应地进行优化。我想即使不使用,编译器在以发布模式(启用优化)构建时仍会尝试使用寄存器进行简单的数字或布尔交换。即使您可以强制编译器在一个平台上使用寄存器,它也没有理由在所有平台上都遵循相同的规则。除非您想检测体系结构并编写自己的程序集(为了获得最佳兼容性和支持,这是一个简洁但糟糕的主意,相信我,哈哈)我建议不要对此进行微优化,而让编译器做它的事情