i++和++i谁的执行效率高
1、前言
在网上看到嵌入式面试题中有一个有趣的问题,i++和++i谁的执行效率高?那么在MDK不开优化的情况下,做一些简单实验验证一下。
2、基本概念
单独执行时,i++和++i都是自增+1。
若使用运算符时存在差别
temp = i++;
先把i的值赋予temp,然后再执行i=i+1;
temp = ++i;
先执行i=i+1,然后在把i的值赋予temp;
void test(void)
{
temp = i++;
printf("temp = i++; temp = %d\r\n", temp);
i = 0;
temp = 0;
temp = ++i;
printf("temp = ++i; temp = %d\r\n", temp);
}
3、在MDK不开优化的情况下,i++和++i谁的效率高?
3.1单独使用
C语言代码
void test(void)
{
i++;
}
转换为汇编我们可以看到
i++为五条语句
C语言代码
void test(void)
{
++i;
}
转换为汇编我们可以看到
++i为五条语句
所以单独执行时,没有差异
3.2在当成运算符使用时
void test(void)
{
temp = i++;
}
转换为汇编可以看到
temp = i++;为9条语句
void test(void)
{
temp = ++i;
}
转换为汇编可以看到
temp = ++i;为7条语句
使用循环将temp = i++ 和 temp = ++i进行多次执行,查看运行时间的差异。如何测量程序运行时间
可以看出在相同条件下,temp = i++运行多次,执行的时间更长。
4、总结
在编译器不开优化的情况下,单独使用i++和++i差异不大,若当运算符使用时,++i的效率更高。
内容若有错误,敬请留言 ,指正!