看板 Programming 關於我們 聯絡資訊
※ 引述《mgtsai ()》之銘言: : void multTable(int **table, int N) : 編譯時請加 -O3 (x86) 或 -O9 (RISC CPUs) 剛剛用系上的主機測了一下~ (gcc 3.4.6, Red Hat 3.4.6-3) 程式1: const int tableSize = 10000; int table[tableSize][tableSize]; void multiTable(int table[][tableSize], int N) { register int i; for (i = 0; i < N; ++i, ++table) { register int r = 0; register int *p = *table; register int *q = p + N; while (p < q) { *p++ = r; r += i; } } } int main() { multiTable(table, tableSize); return 0; } g++ -o 1 -O3 Test1.cpp time ./1 0.103u 0.333s 0:00.43 100.0% 0+0k 0+0io 0pf+0w 0.105u 0.323s 0:00.42 100.0% 0+0k 0+0io 0pf+0w 0.091u 0.338s 0:00.42 100.0% 0+0k 0+0io 0pf+0w 0.091u 0.335s 0:00.42 100.0% 0+0k 0+0io 0pf+0w 0.101u 0.323s 0:00.42 100.0% 0+0k 0+0io 0pf+0w 程式2: void multiTable(int table[][tableSize], int n) { int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) table[i][j] = i * j; } g++ -o 2 -O3 Test2.cpp time ./2 0.107u 0.347s 0:00.45 97.7% 0+0k 0+0io 0pf+0w 0.113u 0.341s 0:00.45 100.0% 0+0k 0+0io 0pf+0w 0.120u 0.333s 0:00.45 100.0% 0+0k 0+0io 0pf+0w 0.122u 0.331s 0:00.45 100.0% 0+0k 0+0io 0pf+0w 0.134u 0.320s 0:00.45 100.0% 0+0k 0+0io 0pf+0w 好像差別不大, 編譯器可能在指令簡單的情形下, 把能最佳化的都最佳化了~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.50.147
final01:register不是沒用了嗎?那還不如inline asm140.134.116.241 05/27 22:05
LiloHuang:用SSE的SIMD指令集試試看會不會比較快:P 140.114.71.40 05/27 22:14