給定兩段實現相同邏輯(週期性設置變量 a 為 1 和 0)的代碼片段,探討哪種寫法效率更高:
for 迴圈嵌套在 while(1) 中,通過索引 i 控制階段。while(1) 配合 switch(i) 狀態機,在特定 case 修改 a 並重置 i。結論:無法通過靜態代碼判斷優劣。 原因如下:
for 和 switch 均優化為條件分支與跳轉指令,生成的機器碼可能高度相似。若極其在意性能,應採取以下科學方法:
-O2 / /O2)編譯發布版本。Alt+8、GCC objdump -d)查看生成的匯編指令條數、跳轉類型。QueryPerformanceCounter, rdtsc)實測耗時。通常情況下,代碼可讀性與可維護性優先;除非證實為熱點瓶頸,否則避免過早優化。