2012年2月21日火曜日

改善:繰り返し行なう処理の効率化~何度も同じことを行なわない

3路線(東山線、名城線、名港線)まで、最短完乗ルートの計算ができるようになったけど、4路線は1時間経っても終わらない。


前回の改善ではルート作成のルールを追加。
今回は処理の効率化。
何度も繰り返される処理を効率化することで、処理速度をアップさせようという改善。

改善点は完成チェック重複チェックの高速化。
具体的には、前のバージョンではチェックの都度行っていたセグメント数のカウントルート作成と同時に行なうようにする。
処理が複雑になるのでバグが入らないように慎重にプログラムを改善。


3路線(東山線、名城線、名港線)での計算結果は次の通り。
まずは改善前。


次に改善後。
計算結果は同じ。
計算ルート数(intMakeRrouteNum)は 17623 同じだけど、処理時間が、18秒から11.3秒に改善されている。
改善効果は約1.6倍

更に4路線(東山線、名城線、名港線、鶴舞線)で試してみた。
なかなか終わらない。
この程度の改善では無理なのかな。


4路線を、東山線、名城線、名港線、上飯田線にして試してみた。
まずは改善前。


続いて改善後。
計算結果は同じで、検索ルート数も 75669 で同じ。
計算時間は、改善前の130.8秒から84.5秒約1.5倍に改善。


全6路線はまだまだ遠い。

つづく。

0 件のコメント:

コメントを投稿