哪个更快? ++,+ =或x + 1?
|
我正在使用C#(此问题对类似C ++的类似语言也有效),并且我试图找出最快,最有效的增量方法。在我的游戏中,它不只是一两个增量,而是每秒300个增量。就像屏幕上每个精灵的帧都在增加,我的rpg角色的速度和位置,摄像机的偏移量等等。所以我在想,哪种方法最有效?例如,我可以做的每动作增加5
y_pos
:
1。
Player.YPos += 5;
2。
Player.YPos = Player.YPos + 5;
3。
for (int i = 0; i < 5; i++)
{
Player.YPos++;
}
哪一个最有效(最快)?
没有找到相关结果
已邀请:
5 个回复
素汞读
棠媳鳖
比than5ѭ甚至even6ѭ快是谬论。所有不错的编译器都会将这三个指令转换为相同的代码。 对于加法这样的微不足道的操作,请编写最清晰的代码,并使编译器担心它会很快。
剃摧庭峨僳
开关来实现。 例如,当使用命令
进行编译时(使用g ++ 4.5.2),选项1和2都会生成此汇编器。
对于选项3,g ++产生的汇编器效率明显降低:
但是,通过优化(即使是-O1),g ++也会针对所有3个选项生成此代码:
g ++不仅展开了选项3中的循环,而且还使用lea指令在单个指令中进行加法运算,而不用费心于
。 因此,g ++始终会为选项1和2生成相同的程序集。只有在您明确启用优化功能后,g ++才会为所有3个选项生成相同的程序集(这可能是您期望的行为)。 (尽管我从未尝试过,但看起来您也应该能够检查由C#生产的程序集)
屉杆绊
上面的代码在ILSpy中是:
所有这些的IL也相同(在发布模式下):
嗜蒂谷尘旱