我很好奇是否有人知道以下哪个执行得更快(我知道这似乎是一个奇怪的问题,但我正试图从我的程序中尽可能多地节省时间和资源。)
int i=0;
i+=1;
或
int i;
i=1;
我也很好奇哪个比较更快:
//given some integer i
// X is some constant
i < X+1
或
i<=X
对于那些已经发布答案的人,我很抱歉,我对其进行了编辑,因此第一部分是正确的,我的意思是如果我被初始化为 0。再次对造成的混淆表示歉意。
最佳答案
第一个操作可能没有意义,因为,除非 i
是静态的,你离开了i
未初始化。
您被误导了,并且关注了错误的事情。猜测不会带你到任何地方;拿出一个概要文件,概要分析你的代码,然后用数据找出哪些部分需要优化。优化是设计更改,无论是不同的数据结构还是算法。
您严重低估了编译器。您所做的任何事情都不会因如此微小的更改而有所不同,两者都会编译为编译器决定更快的任何一个。如果你想要一个整数,只需执行:int i = 1;
过你的生活。如果你想比较一个整数是否小于或等于 X,那么就这样说:i <= X;
.编写干净可读的代码。附带说明一下,当 X 处于最大值时,您的两个比较是不一样的;添加一个就会溢出。
如果你真的很认真,再说一遍:拿出一个分析器。另一件事是查看生成的程序集,看看它生成了哪些指令。如果您不知道如何做到这一点,您很可能不适合需要优化。 :/
关于c++ - 基本 C++ 速度(初始化与添加)和比较速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525485/