--- Title: enhancer jit 高速化の実験 Author: yamasyuh68 Web: https://mimemo.io/m/kEWpAok93a47Jaj --- 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を使えば速くなるんだろうか?? やってるのは配列の演算ではなく参照だけだ。それでも速いのかな?? - エラーじゃないけど警告が出てる 速度に関係あるのか?? ---- 191029 # enhancer jit高速化 追加 - テーブル参照が遅く jitでもあまり高速化できていないんだが、外の参照が遅いってことを思い出した 確認したら関数の中でselfのテーブルを参照していたのでいったん table = self.table として関数内の変数にしたら少しだけど速くなった ( ´∀`) - しかし地味だな もっとネックを押さえて早くできないものか?? ---- → [戻る PyQt で画像のビューア](https://mimemo.io/m/QORbW4qkvOoda0N)