MetaEditorヘルプ

コードプロファイリング

コードプロファイリング

プロファイリングは、アプリケーションの個々の断片(関数、行)の実行時間などの特性を集めるプロセスです。MetaEditorは、統合されたコードプロファイリング機能でプログラマーのソースコード最適化を支援します。

プロファイリングは取引プラットフォームの通常チャート上で実行することができますが、ストラテジーテスターの履歴データを使用しても実行できます。前者では、プログラムは実時間で更新されるチャート上で起動され、プログラムの実際の状況での動作を確認することができます。後者では、プログラムはストラテジテスターでビジュアルモードで起動されます。この方法の利点は、取引サーバーからの実際のデータを待つ必要がないことです。

多くのプログラム(特に指標)は、新しいティックの到着時(OnTick、OnCalculate)にのみ計算を実行するため、その性能を評価するためには、実時間で新しいティックを待たなければなりません。履歴データを使用してプロファイリングを行うと、市場がしまっている週末でも、必要な負荷を即座に提供し、プログラムのパフォーマンスをテストすることができます。

プロファイリングの起動

コードプロファイリングを起動するには、アプリケーションソースコード(mq4 または mq5)を開き。 「デバッグ」メニューまたは「標準」ツールバーで「実データのプロファイリングの開始 実データのプロファイリングの開始」または「履歴データのプロファイリングの開始 履歴データのプロファイリングの開始」をクリックします。

すると、プロファイリングのための特別なプログラムバージョンが自動的にコンパイルされ、選択されたプロファイリングタイプに応じて、プログラムは取引ターミナルの通常のチャートまたはストラテジーテスター(ビジュアルモード)で起動されます。

アプリケーションはデフォールトでEURUSD H1 チャートに表示されます。他の通貨ペアと周期を選択する場合は、MetaEditorの「デバッグ中」タブで設定します。

アプリケーションが起動したら、しばらくの間最大限可能な限りそのすべての機能を使用してください。それはプロファイラが、関数とアプリケーション行の実行時間を測定するために必要です。

つぎに、プロファイリングを停止するには「Stop profiling Stop profiling」コマンド(メニュー「デバッグ」⇒、または「標準」ツールバー)を使用します。

プロファイリング結果をさらに正確に得るためには、「Stop profilingStop profiling」コマンドではなく、操作でプログラムをチャートから削除します。

プロファイリング結果を表示

プロファイリングが完了したら、その結果は「ツールボックス」にその時だけ現れる「プロファイラ」タブに表示されます。2つの表示モードが利用可能です。コンテキストメニューでモードをスイッチできます。

「Functions by Calls」モード

Profiling results

このモードでは、プロファイリング結果は関数別に表示されます。

  • 関数 — クラス関数またはメソド名前
  • — 関数がコールされた行。もし関数がプログラムの複数ヶ所からコールされた場合は、特別なアイコンExpandが付きます。その上でクリックすると各コールのデータが表示されます。
  • Count — アプリケーション実行中に関数がコールされた回数。
  • 時間 — 関数の実行時間(マイクロ秒)とすべての関数の実行時間に占める割合(パーセント)。関数実行時間は、その中でコールされたすべての関数の実行時間の合計です。
  • グラフ — 関数実行時間のグラフ。

アイコンは関数タイプを表しています。

  • Custom function—  カスタム関数
  • System function — システム関数
  • Event handling function— イベントハンドリング関数(On*)
  • Class method— クラスメソド

上述した関数タイプとは別に、プロファイラはさらにつぎものを表示します。

  • System function@global_initializations — 全てのグローバル変数の初期化
  • System function@global_deinitializations — 全てのグローバル変数の終了化

ファイル中の関数を見るには、左ボタンでダブルクリックします。

プロファイラは、アプリケーション実行中にコールされた関数のみ表示します。

「Functions by Lines」モード

Profiling results

このモードでは、実行時間を行別に表示します。行はアプリケーション関数毎にグルーピングされます。

  • 関数 — 関数名
  • — 行番号で、その単位で表示されます。各行の実行時間を見るために、アイコンExpandをクリックすします。
  • Count — その行のコードが実行された回数
  • 時間 — その行のコード実行時間(マイクロ秒)とパーセンテージで、その行の関数実行時間に占める割合を示します。関数のパーセンテージは全アプリケーション実行時間に対する関数の占める割合を示します。
  • グラフ — 実行時間のグラフです。

ファイル中のラインを見るには左ボタンでダブルクリックします。

コンテキストメニュー

つぎのコマンドをコンテキストメニューで利用可能です。

  • オープン — ソースコードファイルの行、あるいは関数へ移動します。同じ動作を、ダブルクリック、または「Enter」キーを押して行えます。
  • 全て展開 — 折りたたんだ関数を展開します。
  • 全て折りたたむ — 展開した関数を折りたたみます。
  • Functions by Lines — プロファイリング結果を行別表示に替えます。
  • Functions by Calls — プロファイリング結果をcall別表示に替えます。
  • Export — プロファイリング結果を、Open XML (MS Office Excel)、 HTML (Internet Explorer) または CSV (Text file)形式でエクスポートします。
  • Auto Arrange — 自動調整をオン/オフします。同じ動作を「A」ホットキーを押して行えます。
  • グリッド — 項目間のグリッド表示をオン/オフします。同じ動作を「G」ホットキーを押して行えます。