(前頁)<<      >>(次頁)          (Up)

5章 要素モデルの計算速度調整
      〜 ディバッグログの影響 〜


 
(1)演算中のファイルアクセス

 当然のことながら演算中にHDD等へのアクセスが発生すると、計算速度は遅くなります。
 これはCommonMPに限った事では無いので、説明等は省略します。


(2)ディバッグログ

 これから色々テストを行うので、 テストに使用する要素モデルを作成しておきます。
 今後、このテストモデルを使用して 色々な実験を行います。
   ・MyExerciseModelプロジェクトに追加
   ・テスト用要素モデル「DebugTestModel」


 テストモデル「DebugTestModel」を用いて、ディバッグログが 要素モデルの計算速度に与える影響を調べてみます。

 Calculate()メソッド内に ログ出力箇所を100箇所、
 DataFusion()メソッド内に ログ出力箇所を2箇所 入れておきます。
 それ以外の処理は何もしません。

// ログの影響を調べる為のコーディング
        protected override long Calculate(long lInputDataNum, ref McReceiveCellDataIF[] csInputCellData)
        {
            for (long lLp = 0; lLp < 100; lLp++)
            {
                McLog.DebugOut(GetSimulationTime(), GetID(), "DebugTestModel", "Calculate", "out");
            }
            return 0;
        }
 
        protected override long DataFusion(long lOutputDataNum, ref McSendCellDataIF[] csOutputCellData)
        {
            McLog.DebugOut(GetSimulationTime(), GetID(), "DebugTestModel", "DataFusion", "in");

            McLog.DebugOut(GetSimulationTime(), GetID(), "DebugTestModel", "DataFusion", "out");
            return 0;
        }


 要素モデルは1個のみ存在し 他の要素モデルとは接続しません。
  
     
 
 このモデルで 1ヶ月の計算を行ない、その計算時間を測定してみました。
 尚 使用したPCは DELL社製 LATITUDE D420 
       CPU    Intel Genuine Duo U2500  1.20GHz
           RAM   1.00 GB
           HDD    55GB
          OS   microsoft Windows VISTA

 ログの出力のスイッチを変更して 測定した結果を下に示します。

   CommonMP.cfg 設定  HymcoModelDebug.cfg 設定   経過時間(秒) 
 LOG_LEVEL = DEBUG  設定     265秒
 LOG_LEVEL = DEBUG  未設定     236秒
 LOG_LEVEL = TRIAL_RUN  未設定     < 2秒
 LOG_LEVEL = TRIAL_RUN  未設定&ログをソースからコメントアウト     < 2秒

 CommonMP.cfg (日本語環境では、\CommonMP\Source\HYMCO\OptionImpl\ModelDeveloperExpressEdition\bin\conf\ja 下に配置 )のログ出力設定(LOG_LEVEL)を  DEBUG にし、HymcoModelDebug.cfg (\CommonMP\Source\HYMCO\OptionImpl\ModelDeveloperExpressEdition\bin\conf 下に配置 )内に 要素モデル名を記述した場合(ログファイルにログが出力される)、1ヶ月間の計算に 4分25秒かかりました。
 次に、CommonMP.cfgファイルの設定はそのままで、 HymcoModelDebug.cfg 内の モデル記述を削除した場合(ログは出力されない)には、 3分56秒 でした。
 CommonMP.cfgファイルのログ出力設定(LOG_LEVEL)をTRIAL_RUN とした場合には、HymcoModelDebug.cfg 内の設定にかかわらず、ログ出力は行われません。 この時には、2秒位内に計算を終了しました。 最後に ソース内のログ出力の記述をコメントアウトした場合を測定すると、この時にも 2秒以内に計算を終了しました。
 以上のことから、ディバッグが完了したならば、CommonMP.cfg 内の LOG_LEVELの設定を TRIAL_RUN (または、ONLINE)にしておくと、計算速度がかなり早くなることが解ります。
 

ディバッグ用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 |