c++ - std::swap() 是如何实现的?
问题描述
我只想知道是怎么std::swap()
实现的?
它是为临时变量分配 RAM 还是简单地使用 CPU 寄存器做所有事情?
解决方案
这完全取决于目标处理器的编译器。它在一台机器上的编译方式可能与另一台机器不同。一些,如果不是大多数,CPU 有一个 XCHG 指令来使用寄存器交换,而不需要第三个临时寄存器;但是,由编译器决定相应地进行优化。我想即使不使用,编译器仍然会尝试在发布模式下(启用优化)使用寄存器进行简单的数字或布尔交换。即使您可以强制编译器在一个平台上使用寄存器,也没有理由在所有平台上都遵循相同的规则。除非您想检测架构并编写自己的程序集(一个简洁但最好的兼容性和支持的坏主意,相信我,哈哈)我建议不要对此进行微优化,而让编译器完成它的工作
推荐阅读
- numpy - return_counts=True 不返回正确的计数
- javascript - 在 Node.js 中使用画布的 marge-images
- python - 无法导入 Django:您确定它已在您的 PYTHONPATH 中安装并激活吗
- linux - systemd 无法执行带有预期参数的命令
- javascript - 移动浏览器上的服务工作者 JavaScript 问题
- java - 在不使用条件语句的情况下查找三个随机生成的数字中的最高、第二高和最低
- javascript - 从 Angular 组件访问 Electron API
- opengl - OpenGL Light随着移动对象移动,即使它不应该
- haskell - `Compose` 与 `Contravariant` 和 `Functor` 的重叠实例
- reactjs - React.js 和 Typescript 返回获取 API 响应的类型?