我何时应该使用ASM呼叫?

xcr*_*ypt 2 c++ performance assembly

我打算用C++编写一个游戏,它将是CPU密集型的(寻路,遗传算法,神经网络......)所以我一直在考虑如何最好地解决这种情况,以便它能运行顺利.

(让这个问题的上半部分是附带信息,我不希望它限制主要问题,但如果你能给我旁注,那将会很好)


是否值得学习如何使用ASM,因此我可以用C++进行ASM调用,它能给我一个显着/显着的性能优势吗?

我应该在什么情况下使用它?

Oli*_*rth 14

几乎从不:

  • 您只想在分析C++代码并将特定部分标识为瓶颈后使用它.
  • 即便如此,只有在用完所有C++优化选项后才想要这样做.
  • 即便如此,你只想使用ASM来实现紧密的内循环.
  • 即便如此,在现代平台上击败C++编译器还需要相当多的努力和技巧.

  • +1,除非你**知道**你需要asm,你不需要它:) (2认同)
  • @xcrypt:对不起,我从不打算冒犯,这是一种幽默的方式,可以说在没有编程的情况下你需要出于性能原因使用汇编.如果你正在编写操作系统,设备驱动程序,BIOS,固件,那种东西 - 在一个`main()`方法没有意义的环境中,汇编可能会很有用.即使你的表现优于编译器(这非常难以实现),它也只会微不足道.真正的性能增益来自优化算法,即缓存结果,避免计算不需要的数据等 (2认同)