というかもはや最適化はインラインアセンブリではなく、
「如何にコンパイラが最適化しやすいCコードを書くか」ということに尽きる気がします。
というわけで21500ぐらいまで来ました。
何はともあれ、自分の環境(DevilsCannyon=Haswell)4.5GHzで普段使っているフィルタをかけて25~26fps出るようになったため、24フレームのアニメをフィルタをかけてリアルタイム再生できます。
参考にいつものフィルタは↓(TFMは事前処理(1pass目)なので2pass目では実質バイパス)
TFM(mode=1,order=-1,PP=1,slow=2,input=TFMout,batch=true)
TDecimate(mode=1,tfmIn=TFMout,input=TDout,batch=true)
FluxSmoothT(temporal_threshold=3)
Spline144Resize(resizex,resizey)
block=32
dfttest(ftype=0,f0beta=1,sigma=4,sbsize=block,sosize=block/2,smode=1,swin=0,tbsize=1,tmode=0,twin=7,dither=1,opt=0)
unsharpHQ(STR=1.0)
コードを弄られてるのはTFM、TIVTCなのですか?
返信削除また公開されることはありますか?
最初TIVTC(TFM)のコードを弄っていたのですが、3~5%ぐらいしか変わらなかったような・・・
返信削除結局、僕の使い方(1pass目でTFMを通す)ではボトルネックは別なことが判明し、dfttestのdither処理を弄ったら(?)20%ぐらい速くなりました。
dfttestもdither=1の処理を弄っているだけなので、使ってなければ変わりません。
TIVTCも、もっとちゃんと考えれば速くなるのでしょうが・・・
ソースの公開は要望があれば・・・
メジャーなTIVTC24P2関数だとどうなんでしょうか?
返信削除私は3~5%でも早くなるならぜひ使いたいです。
3~5%といってもプラグイン単体の速度なので、全体でどうなるかは使い方次第だと思います。
返信削除TIVTC24P2はあまりよく知りませんが、ググったところではEEDI2やTDeintを使っているようなので、そちらの方がボトルネックになっているのではないでしょうか?
一度、VisualStudio(私的利用では無料です)などのプロファイラでどこがボトルネックになっているのかを確認すると良いと思います。
GPLはバイナリを公開するといろいろ面倒(ソースの入手手段を用意しなければならない)なので、申し訳ないですがソースのみで。
とは言ってもアセンブラをCに直しただけだったような・・・
https://drive.google.com/open?id=0B0rhAUR48oeVUW5zblpYZUh2b1k
ありがとうございます。
返信削除プログラミングは全くダメなのでビルドだけしました。
結果は0.250fpsほどの高速化となりました。
とりあえずバグが出るまでこのまま使うことになりそうです。
ありがとうございました。