できるだけ高速化

Python3 対応以降のソースを全体的に見直して、高速化してみました。

v18.patch

まずバージョン17から

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v17/objs_32 div=32
  :
wh : 300/300(100.0%) : fin 3.09s
frm : 300/300(100.0%) : fin 12m 51.35s

out_v17/objs_32.mp4

そしてバージョン18

$ cd ..

$ cat v18.patch | ( cd rt ; patch -p1 )

$ cd rt

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v18/objs_32 div=32
  :
frm : 299/300(99.7%) : total 7m 35.62s : rest 1.51s : 2018/04/08 00:26:20
wh : 0/300(0.0%) : not start yet
wh : 184/300(61.3%) : total 1.63s : rest 0.63s : 2018/04/08 00:26:20
wh : 300/300(100.0%) : fin 1.77s
frm : 300/300(100.0%) : fin 7m 35.91s

out_v18/objs_32.mp4

(7*60+35.91) / (12*60+51.35) * 100 = 59.10
100 - 59.10 = 40.90

40.90パーセントの向上です。v^_^)

ということは、解像度を4倍あげてフレームレート2fpsにおとすと、

4*4*(2/30)=16/15=1.066

だいたい同じくらいの時間で仕上がるはず。

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v18/objs_8_2_ div=8 fps=2
  :
wh : 4732/4800(98.6%) : total 32.64s : rest 0.46s : 2018/04/08 00:53:13
wh : 4800/4800(100.0%) : fin 32.60s
frm : 20/20(100.0%) : fin 8m 14.18s

out_v18/objs_8_2_.mp4

ですね。

さらに解像度を2倍でフレームレート30fpsの予想時間は

((8*60+14.18)*2*2*(30/2)) / (60*60) = 8.23

8.23時間。試してみます。

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v18/objs_4 div=4
  :
wh : 19196/19200(100.0%) : total 1m 55.49s : rest 0.02s : 2018/04/08 08:58:21
wh : 19200/19200(100.0%) : fin 1m 55.53s
frm : 300/300(100.0%) : fin 7h 56m 30.00s