C语言速度优化之指针赋值与if判断

最近在写的一个项目需要优化处理速度,我写了一下程序来测试指针赋值与指针判断的速度比较。结果让我大吃一惊。

#include <stdio.h>
#include <stdlib.h>
#include <time.h> 



int main(int argc, char *argv[]) {
    int j;
    int * tmp;
    clock_t start = clock();
    int i=0;
    tmp=malloc(sizeof(int *));
    for(;i<100000000;i++){
        tmp[0]=2324;
        tmp[1]=32423;
        tmp[2]=90123;
        tmp[3]=23421;
    }
    clock_t end = clock();
    printf("程序运行时间为: %ld ms \n",end - start);
    start = clock();
    i=0;
    for(;i<100000000;i++){
    if(tmp[0]==2356){
        j=9089;
     }
     if(tmp[1]==234){
        j=7812;
     }
     if(tmp[2]==2342){
        j=2345;
     }
     if(tmp[3]==23423){
        j=12032;
     }
    }
    end = clock();
    printf("程序运行时间为: %ld ms",end - start);
    return 0;
}

结果如下:

程序运行时间为: 296 ms
程序运行时间为: 344 ms

我又运行了数次,结果都是前一段程序比后一段程序块40~50ms左右。猜测可能是因为我在for循环中一直赋同样的值,编译器做了相关优化,可是如果那样的,不可能只快40~50ms。
第一小部分的程序主体是:

 for(;i<100000000;i++){
        tmp[0]=2324;
        tmp[1]=32423;
        tmp[2]=90123;
        tmp[3]=23421;
    }

第一小部分的程序主体是:

    for(;i<100000000;i++){
    if(tmp[0]==2356){
        j=9089;
     }
     if(tmp[1]==234){
        j=7812;
     }
     if(tmp[2]==2342){
        j=2345;
     }
     if(tmp[3]==23423){
        j=12032;
     }
    }

测试环境是 :Dev C++
同样的,每次都访问了指针指向的地址,结果赋值竟然比判断快。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值