y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

またまたパフォーマンスチューニング

色んな部分で利用されている共通関数(DBからスキーマ情報を読み取り、配列に格納する関数)の改良を実行。処理ブロック単位でタイマーを埋め込み、時間を測定。
特定のテーブルにアクセスした際に遅くなっていることが分かった。
まず。重複した処理のフローを見直すことで半分の時間になった。
次に、適当に書いていたSQL文の部分で、MaxRecordを正しく設定することで飛躍的に高速化。
テーブルのプロパティを参照し、フィールドタイプや定義サイズを調べる部分で、不必要なレコードセットまで取得していたのが敗因。
結果のレコードが正しく取得できているからといって、正しい動きをしているとは限らない。
最適な動きなのかどうかを考えてコーディングしなければ、ドロドロに遅いシステムになってしまうことを強く実感。

処置前に比べ、トータルで1/10程度に!

    改善前→改善後→さらに改善後
処理1:3秒 →2秒 → 0秒
処理2:40秒 → 18秒 → 4秒
処理3:5秒 → 3秒 → 1秒