[心得] Benchmark

作者: ResolaQQ (ResolaQQ)   2015-12-03 23:11:19
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
作者: ResolaQQ (ResolaQQ)   2015-12-06 22:35:00
補一下,只寫 Alien.bin 這個遊戲的C -O0 by dll 98.37 MHzC -O3 by dll 154.63MHzRPython -O0 by dll, memory int list 77.79 MHzRPython -O3 by dll, memory int list 112.97 MHzRPython -O0 by dll, memory rffi.CArray 95.74 MHzRPython -O3 by dll, memory rffi.CArray 111.74 MHz用 dll 會吃掉一部份速度,C 剩 80%,RPython 剩 66%不想重寫也只能將就了,反正還是比訓練好的 PyPy 快三倍

Links booklink

Contact Us: admin [ a t ] ucptt.com