c++ - std::swap() 是如何实现的?

标签 c++ cpu hardware allocation

<分区>

我只想知道std::swap()是如何实现的?

它是为临时变量分配 RAM 还是简单地用 CPU 寄存器做所有事情?

最佳答案

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

关于c++ - std::swap() 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739092/

相关文章:

java - 大小和容量规划技巧和操作方法

c++ - 如何告诉某个套接字从队列中获取数据?

c++ - 将最后一行 cout 发送到窗口

c++ - 如何在不吞噬 CPU 的情况下进行大量处理?

x86 - 如何与连接到并行端口的设备通信?

hardware - 如何思考数字电路设计

c++ - 转换函数是否返回 void "old-style-cast"?

c++ - 在 C++ 中添加两个对象(运算符重载)

cpu - 缓存是否具有 CPU 的字节序?

python - 使用 Python 查找 CPU L3 缓存大小