程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言速度優化之指針賦值與if判斷

C語言速度優化之指針賦值與if判斷

編輯:關於C語言

C語言速度優化之指針賦值與if判斷


最近在寫的一個項目需要優化處理速度,我寫了一下程序來測試指針賦值與指針判斷的速度比較。結果讓我大吃一驚。

#include 
#include 
#include  



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 
,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++
同樣的,每次都訪問了指針指向的地址,結果賦值竟然比判斷快。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved