閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

DrawLines でのパフォーマンス低下

理由が良く解らないのだけれど、アンチエイリアスを有効にして (Graphics.SetSmoothingMode(SmoothingModeHighQuality)) 、 X 座標がソートされていない (でたらめに入っている) ポイントの配列を DrawLines に突っ込むと描画処理が異様に遅くなることがある。

必ず再現するわけではなくて、たぶん、線が重なりまくって結果が円 (多分矩形とかでもいいと思う) を塗り潰したような形になる時に発生するっぽい。ポイントは大体 1 万点くらい。全く同じ点数でも、それほど線が密集しない (ばらけた) データなら大丈夫なので、最終的な図によってパフォーマンスが変わってくるのだろうと思う。アンチエイリアシングを掛けるときになんかそういう気をつけなきゃいけないポイントでもあるのだろうか。未知の分野のため中で何やっているか想像も付かないので、さっぱりわからない。

常に遅くて、それがアンチエイリアシングをかけた時の限界とかならまだいいのだけど、データによってはそれなりに動くので気になって仕方が無い……。

追記

お、これは複数回に分けて書くというやり方が有効みたいだ。それなりに動くようになった。