enhancer jit 高速化の実験 version 5
hogehoge enhancer jit 実験
191016
@[TOC](項目なり)
# enhancerの高速化
- 大きいファイルで実験
## 全色と赤のみチェックで速さを見る
ほとんど変わりませんでした┐('д')┌
ということはテーブルの参照自体はあまり時間を要しないってことかな
## 全色チェックのルーチンのみ外に出して @jit してみる
enhancerは単純に元データのRGBを変換テーブルに沿って置き換えているだけ
画像が大きくなると当然データも二乗で増えるから処理に時間がかかるtんだと思う
で、ここを抜き出してjitして時間を計測してみた
①通常画像 jitあり
warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc))
makeenhance : 1.6610949039459229
makeenhance : 0.18001031875610352
makeenhance : 0.1760098934173584
makeenhance : 0.18201065063476562
makeenhance : 0.19201111793518066
makeenhance : 0.1870105266571045
makeenhance : 0.1870105266571045
makeenhance : 0.18801069259643555
makeenhance : 0.1910109519958496
makeenhance : 0.16900968551635742
makeenhance : 0.15900897979736328
makeenhance : 0.15500879287719727
makeenhance : 0.17701005935668945
makeenhance : 0.1760101318359375
②通常画像 jitなし
makeenhance : 0.24201369285583496
makeenhance : 0.2110118865966797
makeenhance : 0.21801257133483887
makeenhance : 0.23101305961608887
makeenhance : 0.2260129451751709
makeenhance : 0.21601223945617676
makeenhance : 0.22201251983642578
makeenhance : 0.22301268577575684
makeenhance : 0.19601106643676758
makeenhance : 0.19201111793518066
makeenhance : 0.19201064109802246
makeenhance : 0.19301104545593262
makeenhance : 0.21601247787475586
makeenhance : 0.21401214599609375
makeenhance : 0.2150123119354248
makeenhance : 0.2130122184753418
③大きめ画像 jit
warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc))
makeenhance : 3.208183526992798
makeenhance : 0.9250528812408447
makeenhance : 0.9220526218414307
④大きめ画像 jitなし
makeenhance : 1.0920627117156982
makeenhance : 0.9560546875
makeenhance : 0.970055341720581
makeenhance : 1.0410597324371338
## 考察
- jitは初回は遅い
ここでコンパイルするみたい
事前にコンパイルできたら良いんだけど・・
- 大きめのファイルでも変換で1秒前後かかり、jitの方が速いけれどせいぜい0.05秒程度
小さいファイルだと0.02秒程度か
- 大小ファイルの縦横から画素数を出して1画素単位の速度を出した方が良いな
- ここにnumpyを使えば速くなるんだろうか??
やってるのは配列の演算ではなく参照だけだ。それでも速いのかな??
- エラーじゃないけど警告が出てる
速度に関係あるのか??
191016
項目なりenhancerの高速化全色と赤のみチェックで速さを見る全色チェックのルーチンのみ外に出して @jit してみる考察(項目なり)
enhancerの高速化
- 大きいファイルで実験
全色と赤のみチェックで速さを見る
ほとんど変わりませんでした┐('д')┌
ということはテーブルの参照自体はあまり時間を要しないってことかな
全色チェックのルーチンのみ外に出して @jit してみる
enhancerは単純に元データのRGBを変換テーブルに沿って置き換えているだけ
画像が大きくなると当然データも二乗で増えるから処理に時間がかかるtんだと思う
で、ここを抜き出してjitして時間を計測してみた
①通常画像 jitあり
warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc))
makeenhance : 1.6610949039459229
makeenhance : 0.18001031875610352
makeenhance : 0.1760098934173584
makeenhance : 0.18201065063476562
makeenhance : 0.19201111793518066
makeenhance : 0.1870105266571045
makeenhance : 0.1870105266571045
makeenhance : 0.18801069259643555
makeenhance : 0.1910109519958496
makeenhance : 0.16900968551635742
makeenhance : 0.15900897979736328
makeenhance : 0.15500879287719727
makeenhance : 0.17701005935668945
makeenhance : 0.1760101318359375
②通常画像 jitなし
makeenhance : 0.24201369285583496
makeenhance : 0.2110118865966797
makeenhance : 0.21801257133483887
makeenhance : 0.23101305961608887
makeenhance : 0.2260129451751709
makeenhance : 0.21601223945617676
makeenhance : 0.22201251983642578
makeenhance : 0.22301268577575684
makeenhance : 0.19601106643676758
makeenhance : 0.19201111793518066
makeenhance : 0.19201064109802246
makeenhance : 0.19301104545593262
makeenhance : 0.21601247787475586
makeenhance : 0.21401214599609375
makeenhance : 0.2150123119354248
makeenhance : 0.2130122184753418
③大きめ画像 jit
warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc))
makeenhance : 3.208183526992798
makeenhance : 0.9250528812408447
makeenhance : 0.9220526218414307
④大きめ画像 jitなし
makeenhance : 1.0920627117156982
makeenhance : 0.9560546875
makeenhance : 0.970055341720581
makeenhance : 1.0410597324371338
考察
- jitは初回は遅い
ここでコンパイルするみたい
事前にコンパイルできたら良いんだけど・・ - 大きめのファイルでも変換で1秒前後かかり、jitの方が速いけれどせいぜい0.05秒程度
小さいファイルだと0.02秒程度か - 大小ファイルの縦横から画素数を出して1画素単位の速度を出した方が良いな
- ここにnumpyを使えば速くなるんだろうか??
やってるのは配列の演算ではなく参照だけだ。それでも速いのかな?? - エラーじゃないけど警告が出てる
速度に関係あるのか??