如何解决哪种方法可以更快地为变量分配数字或通过添加或减去某个数字来更改该变量的值?
以下哪个更快?
int a = 10 \\initialisation
我想将a的值更改为11,我可以通过以下两种方式进行操作
1。a = 11
或
2。a += 1
速度快1或2,顺便说一句,我为此使用C语言。任何帮助,将不胜感激。谢谢
解决方法
假设对 a 的修改会影响堆栈,而不是仅由寄存器支持 a :
-
a = 11
是简单的写操作,并且在很多CPU上,CPU在写完内存之前(当然是在访问内存的情况下)执行下一条指令。 -
a +=1
首先需要读取该值,然后在完成递增操作后再写入新值,即使通过一条汇编程序指令也需要全部读取。除了CPU能够将读+增量+写与下一条指令并行化之外,这需要比写更多的时间。
如果优化后仅由寄存器支持的 a 的使用全部取决于指令的长度,则增加寄存器所需的字节数少于设置值所需的字节数,并且速度更快,主要是在分配的值较大时。
无论如何,时间差几乎没有,使源代码可读且健壮更重要
-
a = 11
既可读又健壮 -
a += 1
仅在 a 已经为10且可读性都较低时才是正确的(需要先看一下才能猜测 a 将为11)。且健壮性较低(如果在 a 之前进行了更改,可能未按预期值10)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。