本文章主要研究各种变量类型加减乘除以及取模所耗费时间的差异
以下不作特殊说明均为 1 e 9 1e9 1e9次操作,时间均以毫秒记,测量多次取平均数
由于机子问题,测得时间可能不同,但其快慢比较相对可信( 32 32 32位 X P XP XP系统 版本 2002 2002 2002 )
f o r for for循环
for(int i=1;i<=1000000000;++i);
++ i i i : 2145 m s 2145ms 2145ms
i i i++ : 2153 m s 2153ms 2153ms
i i i+= 1 1 1 : 2130 m s 2130ms 2130ms
1 − 2 e 9 1-2e9 1−2e9, i i i+= 2 2 2 : 2132 m s 2132ms 2132ms
可以看到这些几乎没有影响, i i i+= 1 1 1也并没有单独的优化,与 i i i+= 2 2 2时间并无明显变化相同
- - i i i : 2158 m s 2158ms 2158ms
i i i- - : 2167 m s 2167ms 2167ms
i i i-=1 : 2153 m s 2153ms 2153ms
让我有点吃惊的是,减法几乎并不慢
还有,+=和-=运算符竟然也不慢,从时间来看甚至还稍微快些,虽然可能是机子误差,但至少并不比++和- -慢
for(int i=1;i<=1000000000;++i)++k;
2590 m s 2590ms 2590ms
for(int i=1;i<=1000000000;++i)++k,++k;
4379 m s 4379ms 4379ms
所以执行 1 e 9 1e9 1e9遍加法的速度接近 1800 m s 1800ms 1800ms
减法速度相近
for(int i=1000000000;i>=1;--i)k=i;
3045 m s 3045ms 3045ms
赋值竟然这么慢
但如果
for(int i=1000000000;i>=1;--i)k=10;
或者
for(int i=1000000000;i>=1;--i)k=k;
2218 m s 2218ms 2218ms
优化起了作用
又: i i i改成 l o n g l o n g longlong lon