1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      OO in C(3):類模擬的性能深入分析

      更新時間: 2007-05-18 15:47:10來源: 粵嵌教育瀏覽量:694


        類模擬中使用了大量的函數指針,結構體等等,有必須對此進行性能分析,以便觀察這樣的結構對程序的整體性能有什么程度的影響。
        
        1.函數調用的開銷
        #define COUNTER XX
        void testfunc()
        {
        int i,k=0;
        for(i=0;i  }
        
        在測試程序里面,我們使用的是一個測試函數,函數體內部可以通過改變YY的值來改變函數的耗時。測試對比是 循環調用XX次函數,和循環XX次函數內部的YY循環。
        
        結果發現,在YY足夠小,X足夠大的情況下,函數調用耗時成為了主要原因。所以當一個“簡單”功能需要“反復”調用的時候,將它編寫為函數將會對性能有影響。這個時候可以使用宏,或者inline關鍵字。
        
        但是,實際上我設置XX=10000000(1千萬)的時候,才出現ms級別的耗時,對于非實時操作(UI等等),即使是很慢的cpu(嵌入式10M級別的),也只會在XX=10萬的時候出現短暫的函數調用耗時,所以實際上這個是可以忽略的。
        
        2.普通函數調用和函數指針調用的開銷
        void (*tf)();
        tf=testfunc;
        
        測試程序修改為一個使用函數調用,一個使用函數指針調用。測試發現對時間基本沒有什么影響。(在次編寫的時候,發現在函數調用出現耗時的情況下(XX=1億),函數指針的調用要慢(release版本),調用耗時350:500。后來才發現這個影響是由于將變量申請為全局的原因,全局變量的訪問要比局部變量慢很多)。
        
        3.函數指針和指針結構訪問的開銷
        struct a {
        void (*tf)();
        };
        
        測試程序修改為使用結構的函數指針,測試發現對時間基本沒有什么影響。其實使用結構并不會產生影響,因為結構的訪問是固定偏移量的。所以結構變量的訪問和普通變量的訪問對于機器碼來說是一樣的。
        
        測試結論:使用類模擬的辦法對性能不會產生太大的影響。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲国内综合网国产精品v日韩精品v | 亚洲a无线在线观看国产 | 色欧美久久久久久久免费看 | 亚洲欧美国产国产第二页 | 自拍视频精品一区二区三区 | 亚洲一区二区在线播放 |