C#+WPFチューニング戦記

C#とWPFで高速なコードと最適なシステムを書くためにやってきたいろいろな事を書いてみます。.NET Frameworkのソースコードを読み解きましょう。なお、ここに書かれているのは個人の見解であって何らかの団体や企業の見解を代表するものではありません。

高速な線分描画とか

あんまりショッキングな書き方をしたくありませんので、現時点ではある開発機で発生した事象として記載します。

始点終点がランダムである場合、線の太さが√3に近いほど高速になるという実測データを得ました。

大まかに言いますと 最速は 1.71px~1.74pxくらいの太さ範囲です。
太さが1pxの線を引く場合の6倍程度の速度でした(見過ごせますか?これ)。

無論、水平垂直の線分の話ではなく、自由に引いた線分のことではあります。
斜めの線を引くと、当然デフォルトでアンチエイリアスがかかるのですが、どうもその部分はハードウェアの恩恵が低いらしくある程度線が太くないと実は無駄にCPUパワーを浪費するということらしいですね。

実証コードは、当初業務で作成したため、持ち出すことはできておりません(当然ですお仕事ですから)。
ちょっと暇がありましたら再度作成してここに出してみようとは思います。が、誰か実証コード書いていただけるとありがたいなぁとは思っていたり思っていたりします。

チップによっても違うかなとは思っているのですが、しかしWPFアンチエイリアスは実はあんまりハードウェアの恩恵がありません(ご存知でしょうか)。なので、グラフィックチップによる差異は皆無あるいは僅差との推論をしております。

どなたか、計測結果を知らせていただければありがたいと思います。また、私の方でも及ぶ限りのベンチマークと実証コードを公開したいと思っております。

ちなみに、ある事実から予想は√2だったのですが、まんまとはずれてしまいました。関係者一同、√3かよ。という状態ですね。(笑)

さあ、これで自分のアプリで線分の描画を1.7くらいにできる人がいたら・・・・。いえ、何と言ったらよいやら。まあ、速度を堪能していただきたいです。活用法については、各自の技量としか。