« 拡大縮小フィルタいろいろ | メイン | JPEG XR の読み込みに対応 »

2014年04月06日

吉里吉里Z 開発:: 各種拡大縮小フィルタの実行速度

    

以下は、Core i7-477T での実行速度。
AVX2 が使用できるとなると Haswell 世代なので新しい CPU になる。
オレンジの枠は stFastLinear との速度比。
他はミリ秒。

stFastLinear は、拡大、または縮小後のサイズでサンプリングするピクセル数が決まるが、stLinear 以降は拡大後のサイズか縮小前のサイズと大きい方のサイズでサンプリングするピクセル数が決まるため、縮小はかなり不利。
また、拡大は AVX2 の方が SSE2 よりも遅くなっているので、SSE2 を選択した方が良いかもしれない。
これは AVX2 が 8 ピクセル単位なので、オーバーヘッドが大きいことによる。

拡大を見ると、速度的に stFastLinear の2倍程度になっており、十分実用的に使える速度。
また、縮小の方は前述の理由により差が広がっているものの、実行速度的には拡大よりも SIMD が効きやすいなどの理由で速くなっている。
表は、縮小の場合縦横 1/4 、拡大は 縦横 4倍したもので計測している。
サイズは、フルHD (縮小はフルHD サイズから 1/4、拡大は 1/4 フルHD サイズからフルHD サイズへ拡大 )。
クオリティーについては、前回画像を貼った通り。
前回書いたように縮小なら、面積平均が速度と画質で優れていると思われる。
拡大方向は、全体的に速度差が少ないので、一番きれいなものを選択してもいいと思う。
SIMD やマルチスレッドを意識して書いたため、それによって速度が伸びている。
以前の stLinear や stCubic は、リアルタイムで使用するのは厳しい速度だったが、これくらいの速度であれば CPU に応じて選択できる。
ユーザーがパフォーマンスかクオリティーを選択できれば満足できそう。

C、MMX は速度的に厳しいが、SSE2 を使えないことは少ないはず。
ただ、初期の SSE2 は遅かったので、Core 2 世代以降くらいからが実用的な範囲かもしれない。

stFastLinear や stNearest は、MMX までの実装なので、ここも AVX2 まで対応すればさらに速度が伸びそう。
ただ、stNearest はほぼメモリコピーと思われるので、対応しても意味がないかもしれない。
後、ブレンドやクリッピングの制限がなくなったので、使いやすくなった。
stFastLinear と stNearest はブレンド方式に制限があるので、逆転現象が起きてしまっている。
この辺りも考えると stFastLinear と stNearest も書き換えた方が良いかもしれない。

Fast がついている方は、固定小数点版のため誤差が大きい。
とは言っても、見た目ではあまりわからない程度。
Linear については、従来と名前がかぶるので、Semi-をつけた。

  C MMX SSE/SSE2 AVX/AVX2
  縮小 縮小 MT 拡大 拡大 MT 縮小 縮小 MT 拡大 拡大 MT 縮小 縮小 MT 拡大 拡大 MT 縮小 縮小 MT 拡大 拡大 MT
stNearest         0.13 0.06 1.17 0.51                
stFastLinear         0.51 0.22 7.17 2.18                
old stLinear 51.61   77.34                          
old stCubic 65.96   98.83                          
stLinear 38.39 9.84 70.23 16.98         5.03 1.46 15.32 3.92 3.10 1.14 18.26 5.23
  75.27 44.73 9.79 7.79         9.86 6.64 2.14 1.80 6.08 5.18 2.55 2.40
stCubic 66.02 17.27 97.89 22.41         9.14 2.72 15.93 4.15 5.26 1.97 18.56 5.28
  129.45 78.50 13.65 10.28         17.92 12.36 2.22 1.90 10.31 8.95 2.59 2.42
stSemiFastLinear         28.91 4.74 46.50 8.12 3.27 0.98 13.18 3.32 2.25 0.84 15.23 4.49
          56.69 21.55 6.49 3.72 6.41 4.45 1.84 1.52 4.41 3.82 2.12 2.06
stFastCubic         54.96 8.50 78.66 13.00 5.82 1.86 13.64 3.36 3.68 1.40 16.07 4.68
          107.76 38.64 10.97 5.96 11.41 8.45 1.90 1.54 7.22 6.36 2.24 2.15
stLanczos2 66.42 21.96 97.33 25.14         9.10 2.72 16.12 4.13 5.41 2.08 19.08 5.77
  130.24 99.82 13.57 11.53         17.84 12.36 2.25 1.89 10.61 9.45 2.66 2.65
stFastLanczos2         55.23 9.09 78.00 12.57 5.86 1.81 13.61 3.34 3.71 1.45 16.12 4.78
          108.29 41.32 10.88 5.77 11.49 8.23 1.90 1.53 7.27 6.59 2.25 2.19
stLanczos3 93.83 25.27 124.22 29.33         13.44 4.24 24.40 6.21 7.61 3.28 19.58 5.71
  183.98 114.86 17.32 13.45         26.35 19.27 3.40 2.85 14.92 14.91 2.73 2.62
stFastLanczos3         81.83 13.09 112.72 17.59 8.37 2.93 16.95 4.37 5.02 2.11 16.52 4.92
          160.45 59.50 15.72 8.07 16.41 13.32 2.36 2.00 9.84 9.59 2.30 2.26
stSpline16 65.64 16.81 97.57 21.79         9.01 2.60 15.94 4.03 5.27 1.99 19.20 5.56
  128.71 76.41 13.61 10.00         17.67 11.82 2.22 1.85 10.33 9.05 2.68 2.55
stFastSpline16         54.94 8.81 78.18 13.03 5.71 1.79 13.53 3.58 3.64 1.41 16.09 4.65
          107.73 40.05 10.90 5.98 11.20 8.14 1.89 1.64 7.14 6.41 2.24 2.13
stSpline36 93.15 24.56 124.35 28.64         13.33 4.10 24.23 6.07 7.48 3.19 19.59 5.65
  182.65 111.64 17.34 13.14         26.14 18.64 3.38 2.78 14.67 14.50 2.73 2.59
stFastSpline36         81.28 12.79 112.64 17.69 8.25 2.78 16.85 4.30 4.87 2.01 16.15 4.55
          159.37 58.14 15.71 8.11 16.18 12.64 2.35 1.97 9.55 9.14 2.25 2.09
stAreaAvg 27.75 6.92             3.80 1.14     2.46 0.94    
  54.41 31.45             7.45 5.18     4.82 4.27    
stFastAreaAvg         20.03 3.58     2.49 0.81     1.89 0.71    
          39.27 16.27     4.88 3.68     3.71 3.23    
stGaussian 65.35 17.67 97.24 24.41         9.09 2.62 16.06 4.11 5.29 2.01 19.12 5.73
  128.14 80.32 13.56 11.20         17.82 11.91 2.24 1.89 10.37 9.14 2.67 2.63
stFastGaussian         54.88 8.42 78.46 12.88 5.79 1.92 13.61 3.42 3.68 1.40 16.17 4.69
          107.61 38.27 10.94 5.91 11.35 8.73 1.90 1.57 7.22 6.36 2.26 2.15
stBlackmanSinc 126.39 33.64 154.99 37.19         19.06 5.65 25.23 6.35 10.87 4.26 19.93 5.81
  247.82 152.91 21.62 17.06         37.37 25.68 3.52 2.91 21.31 19.36 2.78 2.67
stFastBlackmanSinc         109.59 17.90 145.62 23.66 11.58 3.63 17.43 4.53 7.01 2.69 16.57 5.03
          214.88 81.36 20.31 10.85 22.71 16.50 2.43 2.08 13.75 12.23 2.31 2.31


投稿者 Takenori : 2014年04月06日 20:35




comments powered by Disqus
Total : Today : Yesterday : なかのひと