Re: [問題] 快速-九九乘法表
※ 引述《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
05/27 22:05, 1F
推
05/27 22:14, , 2F
05/27 22:14, 2F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章