gcc 編譯器與 clang 編譯器
今天上午,盧濤在圖靈社群發表了一篇文章:尤拉計劃30題(加強版)。我把他的第二個程式稍做修改:
1: #include <stdio.h>
2:
3: static int a[1000], size;
4:
5: int sum(int n)
6: {
7: int z = 0;
8: for (; n > 0; n /= 10) {
9: int i = n % 10;
10: z += i*i*i*i*i*i*i*i*i;
11: }
12: return z;
13: }
14:
15: int sum2(int n)
16: {
17: static int t = 0;
18: int m = n % size;
19: return (m != 0) ? (t + a[m]) : (t = sum(n));
20: }
21:
22: int main()
23: {
24: printf("Start\n"); fflush(stdout);
25: size = sizeof(a) / sizeof(a[0]); int z = 0;
26: for(int i = 1; i < size; i++) a[i] = sum(i);
27: for(int i = 2; i <= (int)1e9; i++) {
28: if (sum2(i) != i) continue;
29: printf("%d\n", i); fflush(stdout);
30: z += i;
31: }
32: printf("[%d]\n", z); fflush(stdout);
33: return 0;
34: }
然後,分別使用 gcc 和 clang 編譯,執行結果如下:
為什麼 gcc 編譯器編譯出來的程式比 clang 慢這麼多?這兩個編譯器的版本:
Euler$ gcc --version
gcc (GCC) 6.2.1 20160830
Copyright © 2016 Free Software Foundation, Inc.
本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。
Euler$
Euler$ clang --version
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
相關文章
- 編譯器GCC與Clang的異同編譯GC
- GCC編譯器的使用GC編譯
- FreeBSD中的GNU C編譯器--編譯器GCC(轉)編譯GC
- clang的編譯器有點智慧編譯
- 安裝 GCC 編譯器(轉)GC編譯
- NDK clang編譯器的一個bug編譯
- GCC編譯器背後的故事GC編譯
- Linux gcc編譯器安裝LinuxGC編譯
- gcc編譯GC編譯
- gcc編譯器小知識FAQ(轉)GC編譯
- 探索gcc編譯最佳化細節 編譯器最佳化gcc -o3GC編譯
- iOS clang編譯.miOS編譯
- clang++編譯命令編譯
- 開源編譯器 GCC 跨越 5.0,釋出 GCC 5.1編譯GC
- VS設定 LLVM-Clang 編譯器進行編譯C++專案LVM編譯C++
- redhat 6.5 gcc編譯器初識之一RedhatGC編譯
- 淺談彙編器、編譯器和直譯器編譯
- [譯]iOS編譯器iOS編譯
- (Xcode) 編譯器小白筆記 – LLVM前端ClangXCode編譯筆記LVM前端
- (Xcode) 編譯器小白筆記 - LLVM前端ClangXCode編譯筆記LVM前端
- GNU 編譯器家族 GCC 內部探密(轉)編譯GC
- GCC編譯選項GC編譯
- GCC 編譯選項GC編譯
- 編譯器的編譯基本過程編譯
- 一張圖解析 編譯器編譯流程圖解編譯
- windows上使用clang編譯程式Windows編譯
- CUDAFORTRAN編譯器編譯
- vue編譯器Vue編譯
- GCC 中的編譯器堆疊保護技術GC編譯
- Linux上安裝GCC編譯器過程(轉)LinuxGC編譯
- GCC編譯過程(預處理->編譯->彙編->連結)GC編譯
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- gcc編譯cpp檔案GC編譯
- Go編譯器簡介【譯】Go編譯
- 編譯器如何生成彙編編譯
- 深入剖析 iOS 編譯 Clang / LLVMiOS編譯LVM
- 原創 【CentOS Linux 7】實驗4【gcc編譯器】CentOSLinuxGC編譯
- 在aix5.2下面安裝gcc編譯器AIGC編譯