|
> 今時のPCなら、もう少しイケそうな気が。 > > キューが空の時、無駄に BackgroundWorker が実行され(キューをポーリングするなど)てたりしていませんか? > もしそうなら、そこら辺を同期オブジェクトを使うなどして無駄な実行を排除するようにすれば、もう少し性能が出るかもしれません。
タイマー制御で10ms,33ms,66ms毎にBackgroundWorkerを実行したり、BackgroundWorkerの中で取り込みと保存をループさせてみたりしてみましたが、処理時間はほとんど変わりませんでした。 66msならほぼ1対1ですが、10msだと6倍実行されるからポーリング過多になるかなと思いましたが、この認識で合っていますでしょうか? ついでにngenも使用してみましたが、やっぱり変わりませんでした。
> 崩れるのは表示ですか?それともファイル保存した画像? 崩れるのは両方ですね。 画像処理が1種類なら良いのですが、複数を組み合わせると崩れることから、その間に問題があるのかなと調査しています。
> ここも無駄なポーリングが潜んでそうな予感。 > ファイル保存のキュートは別系統で、表示用のビットマップを保持する仕掛けを作った方が効率的な気がします。
表示と保存を別のバックグラウンドで処理するようにしてみました。 今までは重い処理を行うと表示用のキューがどんどん溜まってたのですが、それが無くなったので効率はかなり良くなりました。 ところで、Bitmap型をそのままキューに入れる方法ってあるのでしょうか?
> 問題ないけど、グローバルである必要も特に無いですね。 > 画像取り込みとファイル保存、それぞれの BackgroundWorker から見えるところにキューがあればいいだけです。 確かに、あんまり広くても意味ありませでしたね。
いろいろ指摘して頂き、ありがとうございます。
|