類別模擬大量使用函式指標、結構體等,需分析此結構對整體效能的影響程度。
#define COUNTER XX
void testfunc() { int i,k=0; for(i=0;i<YY;i++) {} }
/* 測試:循環呼叫 XX 次函式 vs 循環 XX 次內部 YY 循環 */
結果:YY 足夠小、XX 足夠大時,函式呼叫耗時成主因。簡單功能頻繁呼叫建議用巨集或 inline。但實測 XX=10,000,000 才達毫秒級,非即時操作 (UI 等) 甚至嵌入式 10MHz CPU 下 XX=100,000 才明顯,實務上可忽略。
void (*tf)(); tf = testfunc;
結果:時間基本無差異。早期測試發現 XX=1億 時函式指標較慢 (Release 版 350:500),後證實為全域變數存取較區域變數慢 所致,非呼叫機制本身差異。
struct a { void (*tf)(); };
結果:結構體存取無額外開銷。結構體成員為固定位移量,機器碼層面與普通變數存取完全一致。
類別模擬結構 (函式指標、結構體) 在現代 CPU 上效能影響極小,非熱點路徑無需過度優化。關鍵在於避免全域變數、善用 inline 與區域變數。