類模擬的效能分析

2021-03-31 17:48:29 字數 812 閱讀 3599

類模擬中使用了大量的函式指標,結構體等等,有必須對此進行效能分析,以便觀察這樣的結構對程式的整體效能有什麼程度的影響。

1.函式呼叫的開銷

#define counter xx

void testfunc()

}在測試程式裡面,我們使用的是乙個測試函式,函式體內部可以通過改變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 ;

測試程式修改為使用結構的函式指標,測試發現對時間基本沒有什麼影響。其實使用結構並不會產生影響,因為結構的訪問是固定偏移量的。所以結構變數的訪問和普通變數的訪問對於機器碼來說是一樣的。

OO in C 3 類模擬的效能分析

類模擬的效能分析 類模擬中使用了大量的函式指標,結構體等等,有必須對此進行效能分析,以便觀察這樣的結構對程式的整體效能有什麼程度的影響。1 函式呼叫的開銷 define counter xx void testfunc 在測試程式裡面,我們使用的是乙個測試函式,函式體內部可以通過改變yy的值來改變函...

OO in C 3 類模擬的效能分析

類模擬的效能分析 類模擬中使用了大量的函式指標,結構體等等,有必須對此進行效能分析,以便觀察這樣的結構對程式的整體效能有什麼程度的影響。1 函式呼叫的開銷 define counter xx void testfunc 在測試程式裡面,我們使用的是乙個測試函式,函式體內部可以通過改變yy的值來改變函...

易效能,真的行!

再眾多課程中選擇了 易效能時間管理 一是源於對朋友的信任二是源於對喜馬拉雅線上課程的實操性的期待,今天一天的課程結束確實收穫不少新的詞彙 概念 理念及方式方法,跟傳統的培訓課程區別非常大有點兒意思 上課前把葉老師網課聽了一 遍十今天的實踐落地開啟了新世界的大門,也很慶幸比沒來參與學習的小夥伴早一步加...