![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 效能極限
(https://www.pcdvd.com.tw/forumdisplay.php?f=18)
- - 在下寫的小小測試程式, 請各位笑納~~
(https://www.pcdvd.com.tw/showthread.php?t=144974)
|
---|
Your computer needs 28 second(s) to do this process
雙CPU好像沒有太大差異
|
Your computer needs 27 second(s) to do this process
我的是P4-2.4BG |
跑原始的 test.exe (沒下載test2/3 來跑)
P4C 2.6GHz 花 26 秒. |
p4 2.6g oc 2.92g
21秒....~~ ![]() ![]() ![]() ![]() ![]() |
竟然!!
用辦公室電腦P4 2.66Ghz
Your computer needs 24 second(s) to do this process |
P4 3.0CG => 25秒 :shock:
|
收下了
謝謝:) |
P3 1G 256K *2
768mb DDR SDRAM 43sec. 無聊測同時兩支算, 結果都變成45sec. |
CPU:P4 3.0EG
RAM:1G Your computer needs 16 second(s) to do this process 喔16秒 |
對程式做點修改
http://www.csie.ncu.edu.tw/~cs102104/file/Sieve.zip 現在測試100,000,000應該沒什麼問題 我用Athlon 1GHz(133MHz) 256MB SDR SDRAM Windows XP 程式由DevC++ 4.9.8.0(MinGW)編譯 跑起來要26秒 吃掉記憶體約99MB 原作者顯然本來要寫Sieve演算法 可是卻搞錯了演算法的細節 基本上這個演算法的方法是 找出目前已知最大的質數 然後把這質數的正整數倍數的數字通通砍掉 而且除了2以外 3以後的質數的整數倍數要砍掉只要砍其質數的3,5,7,9,11..... 所有奇數倍數就可以了 我也把原作者的int整數(本來一個欄位要4byte) 改成用bool(一個欄位1byte) 且陣列長度可以調整 總之大家試試看吧 另外這樣的寫法因為所Access的記憶體範圍太廣 直觀上來看 比較容易發生Cache miss 當然嚴格來說發生這種情形的應該是在每一輪質數的倍數消完後 要找下個最大已知質數發生 大概就這樣 |
所有的時間均為GMT +8。 現在的時間是12:19 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2024。