5章 要素モデルの計算速度調整
〜 ディバッグログの影響 〜
(1)演算中のファイルアクセス
当然のことながら演算中にHDD等へのアクセスが発生すると、計算速度は遅くなります。
これはCommonMPに限った事では無いので、説明等は省略します。
(2)ディバッグログ
これから色々テストを行うので、 テストに使用する要素モデルを作成しておきます。
今後、このテストモデルを使用して 色々な実験を行います。
・MyExerciseModelプロジェクトに追加
・テスト用要素モデル「DebugTestModel」
テストモデル「DebugTestModel」を用いて、ディバッグログが 要素モデルの計算速度に与える影響を調べてみます。
Calculate()メソッド内に ログ出力箇所を100箇所、
DataFusion()メソッド内に ログ出力箇所を2箇所 入れておきます。
それ以外の処理は何もしません。
// ログの影響を調べる為のコーディング
McLog.DebugOut(GetSimulationTime(), GetID(), "DebugTestModel",
"DataFusion",
"out"); |
CommonMP.cfg 設定 | HymcoModelDebug.cfg 設定 | 経過時間(秒) |
LOG_LEVEL = DEBUG | 設定 | 265秒 |
LOG_LEVEL = DEBUG | 未設定 | 236秒 |
LOG_LEVEL = TRIAL_RUN | 未設定 | < 2秒 |
LOG_LEVEL = TRIAL_RUN | 未設定&ログをソースからコメントアウト | < 2秒 |
ディバッグ用CommonMP環境(\CommonMP\Source\HYMCO\OptionImpl\ModelDeveloperExpressEdition\bin)では、LOG_LEVEL = DEBUG 、本番用のCommonMP環境(\CommonMP\Execute)では LOG_LEVEL = TRIAL_RUN に設定されています。
ログ出力は ファイルにアクセスするため遅くなるのは当然です。 LOG_LEVEL = DEBUG
の場合には、HymcoModelDebug.cfg
内に記述された要素モデル名称を検索し、その中に ログ出力時に引数で指定された要素モデルに一致する名称があれば、出力を行います。 したがって、HymcoModelDebug.cfg内に記述が無くても、要素モデルの検索等の処理が行われるため、かなりの負荷がかかります。 LOG_LEVEL
= TRIAL_RUN
の場合には、ログ出力内で何もしないでそのままリターンしているため、 ログ用コードをコメントアウトした場合とほぼ同じ効果が得られます。
初版:2013/06/27 |