gcc和llvm對程式碼的不同優化效果
程式碼1,p596b.cpp
#include <cstdio> #include <cmath> typedef long long ll; const int n=1000; ll fa(int r) { ll sum2=0,sum3=0,sum4=0,b2,c2; for (int a =1; a<r; a++) { b2=sqrt(r*r - a*a); sum2=sum2+b2; for (int b =1; b<=b2; b++) { c2=sqrt(r*r - a*a - b*b); sum3=sum3+c2; for (int c=1; c<=c2; c++) { sum4=sum4+sqrt(r*r - a*a - b*b - c*c); } } } return 1+8*r+sum2*24+sum3*32+sum4*16; } int main() { ll l=fa(n); printf("%lld",l); }
程式碼2,p596c.cpp
#include <cstdio> #include <cmath> typedef long long ll; const int n=1000; ll fa(int r) { ll sum2=0,sum3=0,sum4=0,b2,c2,b1,c1,a,b,c; for (a =1; a<r; a++) { b1=r*r - a*a; b2=sqrt(b1); sum2=sum2+b2; for (b =1; b<=b2; b++) { c1=b1 - b*b; c2=sqrt(c1); sum3=sum3+c2; for (c=1; c<=c2; c++) { sum4=sum4+sqrt(c1 - c*c); } } } return 1+8*r+sum2*24+sum3*32+sum4*16; } int main() { ll l=fa(n); printf("%lld",l); }
輸出
D:\>g++ p596b.cpp -O3 D:\>timer a Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31 4934805110729 Kernel Time = 0.046 = 0% User Time = 7.519 = 97% Process Time = 7.566 = 98% Global Time = 7.686 = 100% D:\>g++ p596c.cpp -O3 D:\>timer a Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31 4934805110729 Kernel Time = 0.327 = 1% User Time = 21.746 = 97% Process Time = 22.074 = 99% Global Time = 22.192 = 100% D:\>clang++ p596b.cpp -O3 D:\>timer a Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31 4934805110729 Kernel Time = 0.031 = 0% User Time = 11.528 = 98% Process Time = 11.559 = 98% Global Time = 11.686 = 100% D:\>clang++ p596c.cpp -O3 D:\>timer a Timer 9.01 : Igor Pavlov : Public domain : 2009-05-31 4934805110729 Kernel Time = 0.000 = 0% User Time = 11.684 = 99% Process Time = 11.684 = 99% Global Time = 11.780 = 100%
第1個程式碼在g++上比clang++上編譯,執行更快。
第2個程式碼本來想引入2個臨時變數,減少乘法運算,但在g++上起了反作用,在clang++上沒有作用。
相關文章
- GUN、GCC、LLVM和ClangGCLVM
- Richard Stallman 談 GCC、LLVM 和 CopyleftGCLVM
- 分支對程式碼效能的影響和優化優化
- css優化文字顯示效果程式碼例項CSS優化
- 效能優化 (十一) ProGuard 對程式碼和資源壓縮優化
- 自己優化的對拍程式優化
- 【程式碼優化】Bean對映之MapStruct優化BeanStruct
- gcc常用的編譯選項對程式碼的影響(轉)GC編譯
- 10個優化程式碼的CSS和JavaScript工具優化CSSJavaScript
- 程式碼優化優化
- javascript對於if條件語句程式碼的優化方式JavaScript優化
- 自己實現圖片壓縮技術,直接上程式碼,絕對好用(優化效果不錯)優化
- javaScript程式碼優化JavaScript優化
- Java程式碼優化Java優化
- 使用不同IP對營銷推廣的效果!
- 對SGA和PGA的優化建議優化
- 優化If else(簡化程式碼)優化
- Android效能優化——程式碼優化(一)Android優化
- [譯] 論 Rust 和 WebAssembly 對原始碼地址索引的極限優化RustWeb原始碼索引優化
- Android 配置 Ant 指令碼之程式碼混淆和優化Android指令碼優化
- 針對同一元件內較多不同模組進行元件封裝,實現程式碼優化元件封裝優化
- 優化程式碼中的“壞味道”優化
- 前端使用者體驗優化: JS & CSS 各類效果程式碼段前端優化JSCSS
- 無程式碼相對於低程式碼的優勢分析
- webpack--效能優化之打包構建速度和程式碼除錯優化Web優化除錯
- Android 程式碼優化Android優化
- iOS程式碼效能優化iOS優化
- Golang中的interface程式碼和允許效果Golang
- 電話機器人在不同的行業有不同的應用場景和不同的效果機器人行業
- Richard Stallman 反對 Emacs 加入 LLVM 偵錯程式支援MacLVM
- SAP MM 對於MRKO事務程式碼的幾點優化建議優化
- iOS對專案中所有加陰影的程式碼進行優化iOS優化
- 不同平臺下的網路優化優化
- css背景虛化效果程式碼例項CSS
- 圖神經網路版本的Kolmogorov Arnold(KAN)程式碼實現和效果對比神經網路Go
- ARMCC和GCC編譯ARM程式碼的軟浮點和硬浮點問題GC編譯
- Python 程式碼的效能優化之道Python優化
- Golang中常用的程式碼優化點Golang優化