基础运算对时间复杂度影响的分析




本文章主要研究各种变量类型加减乘除以及取模所耗费时间的差异

以下不作特殊说明均为 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 12e9 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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值