測試環境及結果:
pc26 | nb27 | pc34 | pc200 | |||||||||||||||||||||||||||||||||||||||||||||||||
OS | 2.6.9-34.EL | 2.6.9-34 .ELsmp | 2.6.9-34 .ELsmp | 2.6.9-42.0 .10.ELsmp | 2.6.20-rc6 #1 SMP | 2.6.20-rc6 #1 SMP | 2.6.9-42.0 .10.ELsmp | 2.6.9-55.ELsmp | ||||||||||||||||||||||||||||||||||||||||||||
python | 2.3.4 | 2.3.4 | 2.3.4 | 2.3.4 | ||||||||||||||||||||||||||||||||||||||||||||||||
PostgreSQL | 8.1.8 | 8.1.4 | 8.2.3 | 8.2.3 | 8.1.8 | 8.2.3 | 8.2.3 | 8.2.3 | ||||||||||||||||||||||||||||||||||||||||||||
PyGresSQL | 3.8.1 | 3.8.1 | 3.8.1 | 3.8.1 | ||||||||||||||||||||||||||||||||||||||||||||||||
CPU | Intel(R) Pentium(R) 4 CPU 2.80GHz 512 KB Cache (5605.85) | Genuine Intel(R) CPU T2400 @ 1.83GHz 2048 KB Cache (1998.36) (DualCore) | Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz 4096 KB Cache (4819.82) (DualCore) | Intel(R) Xeon(R) CPU 5140 @ 2.33GHz 4096 KB Cache (4657.86) (DualCore x2) | ||||||||||||||||||||||||||||||||||||||||||||||||
RAM | 1GB | 1GB | 2GB | 4GB | ||||||||||||||||||||||||||||||||||||||||||||||||
duration | 5:32:36 (22:39:05 - 04:11:41) | 2:28:11 (16:33:14 - 19:01:25) | 2:08:56 (15:11:55 - 17:20:51) | 2:30:14 (17:47:33 - 20:17:48) | 4:20:45 (22:40:28 - 03:01:13) | 3:51:15 | 1:40:30 | 1:24:22 (09:42:26 - 11:06:42) | 1:24:50 (noatime) | 0:10:05 (noatime/ atime, noprint) /0:10:17 | 0:48:35 (noatime, nohexdump) | (noatime, print=time.ctime, nohexdump) | ||||||||||||||||||||||||||||||||||||||||
average dur./call | 19.956ms | 8.891ms | 7.737ms | 9.015ms | 15.605ms | 13.876ms | 6.030ms | 5.062ms | 5.091ms | 0.605ms 0.617ms | 2.915ms | 1.636ms | ||||||||||||||||||||||||||||||||||||||||
min dur. /1000call | 11.29sec | 7.23sec | 7.19sec | 7.19sec | 4.54sec | 4.54sec | 5.26sec | 4.963sec | 4.971sec | 0.566sec 0.565sec | 2.854sec | 1.566sec | ||||||||||||||||||||||||||||||||||||||||
max dur. /1000call | 57.45sec | 20.25sec | 17.72sec | 17.72sec | 33.39sec | 36.68sec | 9.96sec | 5.714sec | 5.700sec | 1.281sec 1.425sec | 3.792sec | 2.313sec | ||||||||||||||||||||||||||||||||||||||||
mean /1000call | 19.956sec | 8.891sec | 7.737sec | 9.015sec | 15.605sec | 13.876sec | 6.030sec | 5.062sec | 5,091sec | 0.605sec 0.617sec | 2.915sec | 1.636sec | ||||||||||||||||||||||||||||||||||||||||
std devi. /1000call | 8.35sec | 2.58sec | 0.76sec | 0.31sec | 6.22sec | 6.42sec | 0.91sec | 0.079sec | 0.084sec | 0.059sec 0.071sec | 0.090sec | 0.087sec |
可以發現, 即使是使用了 4GB 的 ram, 只可以改善 std. dev.
據此可以推論, 會出現 比較大的執行時間, 應該是 os 的 buffer layer 的影響.
另外, noatime 這個 mount 選項並沒有多少改善. (反而延長了時間)
若是讓 rad.py 不列印任何資訊的話(noprint), 可以改善整個測試的時間. 而且是很可觀的.
noprint 表示將程式內的 InfoPrint() 全部 註解 掉. 這除了 不 call time.time() 外, 也不 call hexDump().
若只是讓 rad.py 不執行 hexDump 的話(直接 return 空字串), 可以節省(與noatime比) 40%左右.
沒有留言:
張貼留言