[心得] Benchmark

看板Python作者 (ResolaQQ)時間10年前 (2015/12/03 23:11), 編輯推噓0(009)
留言9則, 1人參與, 最新討論串1/1
MOS6502 模擬器跑 Atari2600 的兩個遊戲所得到的結果 測試環境是 Windows x64,Intel 2.8GHz C 版本是從底下這兒來的 http://codegolf.stackexchange.com/questions/12844/emulate-a-mos-6502-cpu Python 跟 RPython 版本都是 Py65 的修改版 結果如下 Python32 < Python64 < PyPy < PyPy3 < RPython O0 < C O0 < RPython O3 < C O3 最慢跟最快差了快 200 倍,比較需要注意的是 PyPy3 硬是比 PyPy 快了不少 Z:\>py -2.7-32 test.py Filename: Alien.bin Frequency: 3404332 Counter: 11076043 Second: 3.253514 Instruction: 1000000 Cycle: 3055614 MHz: 0.939173 Z:\>py -2.7-32 -O test.py Filename: Alien.bin Frequency: 3404332 Counter: 11018579 Second: 3.236635 Instruction: 1000000 Cycle: 3055614 MHz: 0.944071 Z:\>py -2.7-64 test.py Filename: Alien.bin Frequency: 3404332 Counter: 9756155 Second: 2.865806 Instruction: 1000000 Cycle: 3055614 MHz: 1.066232 Z:\>py -2.7-64 -O test.py Filename: Alien.bin Frequency: 3404332 Counter: 9849147 Second: 2.893122 Instruction: 1000000 Cycle: 3055614 MHz: 1.056165 Z:\>pypy test.py Filename: Alien.bin Frequency: 3404332 Counter: 259815659 Second: 76.319131 Instruction: 500000000 Cycle: 1527849101 MHz: 20.019215 Z:\>pypy -O test.py Filename: Alien.bin Frequency: 3404332 Counter: 259164404 Second: 76.127829 Instruction: 500000000 Cycle: 1527849101 MHz: 20.069522 Z:\>pypy3 test.py Filename: Alien.bin Frequency: 3404332 Counter: 134081417 Second: 39.385529 Instruction: 500000000 Cycle: 1527849101 MHz: 38.792144 Z:\>pypy3 -O test.py Filename: Alien.bin Frequency: 3404332 Counter: 137038840 Second: 40.254253 Instruction: 500000000 Cycle: 1527849101 MHz: 37.954974 Z:\>test-c--opt0 Filename: Alien.bin Frequency: 3404332 Counter: 13574028 Second: 3.987281 Instruction: 100000000 Cycle: 305570011 MHz: 76.636188 Z:\>test-c--opt3 Filename: Alien.bin Frequency: 3404332 Counter: 6157551 Second: 1.808740 Instruction: 100000000 Cycle: 305570011 MHz: 168.940828 Z:\>test-O0 Filename: Alien.bin Frequency: 3404332 Counter: 10799775 Second: 3.172362 Instruction: 100000000 Cycle: 305570011 MHz: 96.322541 Z:\>test-O3 Filename: Alien.bin Frequency: 3404332 Counter: 5553513 Second: 1.631308 Instruction: 100000000 Cycle: 305570011 MHz: 187.315987 ---------------------------------------------------------------------------- Z:\>py -2.7-32 test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 11083492 Second: 3.255702 Instruction: 1000000 Cycle: 2900865 MHz: 0.891010 Z:\>py -2.7-32 -O test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 11094981 Second: 3.259077 Instruction: 1000000 Cycle: 2900865 MHz: 0.890088 Z:\>py -2.7-64 test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 9831143 Second: 2.887833 Instruction: 1000000 Cycle: 2900865 MHz: 1.004513 Z:\>py -2.7-64 -O test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 9868391 Second: 2.898775 Instruction: 1000000 Cycle: 2900865 MHz: 1.000721 Z:\>pypy test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 503536743 Second: 147.910587 Instruction: 500000000 Cycle: 1449563451 MHz: 9.800268 Z:\>pypy -O test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 512924673 Second: 150.668229 Instruction: 500000000 Cycle: 1449563451 MHz: 9.620897 Z:\>pypy3 test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 178400259 Second: 52.403896 Instruction: 500000000 Cycle: 1449563451 MHz: 27.661368 Z:\>pypy3 -O test.py Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 179105472 Second: 52.611047 Instruction: 500000000 Cycle: 1449563451 MHz: 27.552454 Z:\>test-c--opt0 Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 13233133 Second: 3.887145 Instruction: 100000000 Cycle: 289918928 MHz: 74.584022 Z:\>test-c--opt3 Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 6342670 Second: 1.863117 Instruction: 100000000 Cycle: 289918928 MHz: 155.609591 Z:\>test-O0 Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 10878511 Second: 3.195491 Instruction: 100000000 Cycle: 289918929 MHz: 90.727517 Z:\>test-O3 Filename: AirSeaBattle.bin Frequency: 3404332 Counter: 5593494 Second: 1.643052 Instruction: 100000000 Cycle: 289918929 MHz: 176.451479 -- 放著養蚊子的部落格 http://resolaqq.blogspot.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.166.44 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1449155488.A.F3F.html

12/06 22:35, , 1F
補一下,只寫 Alien.bin 這個遊戲的
12/06 22:35, 1F

12/06 22:36, , 2F
C -O0 by dll 98.37 MHz
12/06 22:36, 2F

12/06 22:36, , 3F
C -O3 by dll 154.63MHz
12/06 22:36, 3F

12/06 22:37, , 4F
RPython -O0 by dll, memory int list 77.79 MHz
12/06 22:37, 4F

12/06 22:38, , 5F
RPython -O3 by dll, memory int list 112.97 MHz
12/06 22:38, 5F

12/06 22:38, , 6F
RPython -O0 by dll, memory rffi.CArray 95.74 MHz
12/06 22:38, 6F

12/06 22:38, , 7F
RPython -O3 by dll, memory rffi.CArray 111.74 MHz
12/06 22:38, 7F

12/06 22:41, , 8F
用 dll 會吃掉一部份速度,C 剩 80%,RPython 剩 66%
12/06 22:41, 8F

12/06 22:42, , 9F
不想重寫也只能將就了,反正還是比訓練好的 PyPy 快三倍
12/06 22:42, 9F
文章代碼(AID): #1MO5kWy_ (Python)
文章代碼(AID): #1MO5kWy_ (Python)