Re: [問題] 快速-九九乘法表

看板Programming作者 (Daniel Guo)時間17年前 (2008/05/27 21:01), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串9/10 (看更多)
※ 引述《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

05/27 22:05, , 1F
register不是沒用了嗎?那還不如inline asm
05/27 22:05, 1F

05/27 22:14, , 2F
用SSE的SIMD指令集試試看會不會比較快:P
05/27 22:14, 2F
文章代碼(AID): #18F0OOmj (Programming)
討論串 (同標題文章)
文章代碼(AID): #18F0OOmj (Programming)