Ticket #18436

グリッド線を描画させようとすると、処理が極めて重くなるようなデータが存在する

Open Date: 2009-08-28 15:44 Last Update: 2010-11-24 10:18

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

グリッド線を描画させようとすると、処理が極めて重くなるようなデータが存在する。

例えば、下記のデータを読み込ませてグラフを描画した後で、フィギュアのプロパティダイアログの設定によってグリッド線を表示しようとすると、処理が非常に重くなって反応が返って来なくなる。

7500, 0.0

7501, 1.0

Ticket History (3/3 Histories)

2009-08-28 15:44 Updated by: kuromaru
  • New Ticket "グリッド線を描画させようとすると、処理が極めて重くなるようなデータが存在する" created
2009-08-28 16:10 Updated by: kuromaru
  • Resolution Update from None to Fixed
Comment

データによっては無駄なグリッド線が大量に生成される場合があり、その対応のために処理が非常に重くなっていました。

グリッド線をどの位置に作成するかは、軸の値の最小値と最大値、および基準値を基に決定しています。例として挙げたデータでは、X軸方向については、最大値から最小値を引いた 7501 - 7500 = 1 という値を基に計算を行い、値 0.20 おきに引くという決定を行っています。 また、その位置を計算する基準となる値は、デフォルトでは 0.0 と設定されています。 これらの基準値 0.0 と間隔 0.20 を基に、全てのグリッド線の位置が決定されます。

ここで、実際にグリッド線を生成する過程に問題がありました。グリッド線は画面に描画する範囲(最小値)<(位置)<(最大値)を満たす位置についてだけ生成すれば十分なはずなのですが、それが最小値よりも小さい範囲や、最大値よりも大きい範囲に渡って生成されてしまい、処理が重くなっていました。 今の例では、基準値 0.0 から最小値 7500 までの間に間隔 0.20 で、約 37500 本もの無駄なグリッド線が生成されてしまいます。

対策としては、最小値・最大値を考慮した処理に書き直し、無駄なグリッド線が生成されないような修正を行いました。 修正したソースコードは CVS にコミット済みです。

2010-11-24 10:18 Updated by: kuromaru
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2010-11-24 10:18
Comment

バージョン 2.0.0 のリリースに伴い close します。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login