2016年6月10日金曜日

【EA高速化】バックテスト時間を短くしよう 設定条件は数字と文字のどちらが速いか!

EA高速化は気になる三点を行ったのですっきした・・・はずでした。

しかし、ソースコードを書いていると気になる点が出てきます。

double a = MarketInfo(Symbol(),MODE_MARGINREQUIRED);

double a = MarketInfo(Symbol(),32);

MODE_MARGINREQUIREDは32で代わりにすることができます。
他にもOrderSendで使われる OP_BUYは0など、文字入力と数字入力を選べるものがあります。

一体どちらが速いのでしょうか?
コンパイル時に同じ表現に変換される気もしますが・・・

//文字
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("EURUSD-a01",MODE_MARGINREQUIRED);
    }
  Comment(GetMicrosecondCount()-t);
  }

//Number
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("EURUSD-a01",32);
    }
  Comment(GetMicrosecondCount()-t);
  }

結果です。
百万回、回して17msほど数字のほうが早いようです。
文字じゃないとわかりにくいという方は
数字で記述してコメントを入れましょう!!
















0 件のコメント:

コメントを投稿