別プロセスのところをC言語で実装

ということで、がんばってC言語で書いてみました。

起動オプション usr_srv を指定した上で、さらに srv_c を指定すると C言語で実装した方のサーバプログラムを起動します。

v21.patch

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

$ cd rt

$ make
gcc -Wall   -c -o sock.o sock.c
gcc -Wall   -c -o cross.o cross.c
gcc -Wall   -c -o ax.o ax.c
gcc -Wall   -c -o vecs.o vecs.c
gcc -Wall   -c -o line.o line.c
gcc -Wall   -c -o v.o v.c
gcc -Wall   -c -o mt.o mt.c
gcc -o sock sock.o cross.o ax.o vecs.o line.o v.o mt.o

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v21/objs_1_2_sc n=1 init_sec=5 div=2 use_srv srv_c
  :
wh : 68851/76800(89.6%) : total 1m 0.56s : rest 6.26s : 2018/04/14 11:47:18
wh : 74103/76800(96.5%) : total 57.30s : rest 2.01s : 2018/04/14 11:47:15
wh : 76800/76800(100.0%) : fin 55.70s

$ ls -l out_v21/objs_1_2_sc.jpg 
-rw-r--r--  1 kondoh  staff  32344  4 14 11:48 out_v21/objs_1_2_sc.jpg

$ ls -l out_v20/objs_1_2_s2.jpg 
-rw-r--r--  1 kondoh  staff  32282  4 13 00:02 out_v20/objs_1_2_s2.jpg

画像ファイルのサイズが微妙に違ってますが、まぁ..同様に見えます。

気になる処理時間は、55.70秒 !!!

v20あんちょこカンニング版の時間にどれだけ迫れるものかと思ってたら、 さらに半分近くにまで短縮 !?

他の設定でも試してみます。フルの解像度で1枚だけの場合

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v21/objs_1_sc n=1 init_sec=5 use_srv srv_c port=23482
  :
wh : 299637/307200(97.5%) : total 3m 41.78s : rest 5.46s : 2018/04/14 09:09:08
wh : 306265/307200(99.7%) : total 3m 37.98s : rest 0.66s : 2018/04/14 09:09:05
wh : 307200/307200(100.0%) : fin 3m 37.46s

3分半。ということは

10秒分の300枚の単純な予想では

( 3*60+37.46 ) * 300 / 60 / 60 = 18.12 時間

色んなアングルがあるので、もうちょっと違う設定でじっくりと

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v21/objs_2_15_sc div=2 fps=15 use_srv srv_c port=23484
  :
wh : 76664/76800(99.8%) : total 1m 0.14s : rest 0.10s : 2018/04/14 11:21:29
wh : 76800/76800(100.0%) : fin 1m 0.12s
frm : 150/150(100.0%) : fin 2h 7m 12.09s

解像度1/2でフレームレート15/30倍なので、フルで試したとすると
( (((2*60)+7)*60+12.09) * 2*2*2 ) / 60 / 60 = 16.96

予想では17時間。

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v21/objs_full_sc use_srv srv_c
  :
wh : 306431/307200(99.7%) : total 3m 58.73s : rest 0.59s : 2018/04/15 05:15:55
wh : 307200/307200(100.0%) : fin 3m 58.63s
frm : 300/300(100.0%) : fin 16h 50m 54.21s

確かに17時間で終了です。

2週間以上かかる予想だった頃や、 立方体と平面だけで3日もかかってた頃に比べると、 速くなりました〜 v^_^)