エラー、バグ、質問 - ページ 2749

 
Roman:

前のページでfxsaberさんが測定値を教えてくれました。
その理由を説明しました。
静的、動的を問わず、常にメモリを確保する。

大きなテーブルということであれば、画面には左側だけが表示され、あとはカットされているので、何があるのかわからない。

しかし、コードから判断すると、このマクロを比較した場合

GetCurrentTick2(Tick, !i)

100回の繰り返しで1回しか関数が呼ば れないし、最初のマクロは繰り返しごとに呼ばれる。 だから意味がないんだ。

 
Alexey Navoykov:

大きなテーブルのことなら、画面には左の部分だけが見えていて、あとは切れているので、何があるのかわかりません。

しかし、コードから判断すると、このマクロを比較した場合

そして、最初のマクロでは、100回の繰り返しで1回しか関数が呼び出されて いません。 つまり、これはナンセンスなのです。

コンパイラは全能ではないので、正しいコードでコンパイラを助ける必要がある場合もあります ))

 
Sergey Dzyublik:
MEデバッガ(build 2370)のバグ - StepInto (F11) と手動でブレークポイントを設定してもうまくいかない。問題は、StepOver(F10)アクションが一度でも
関数呼び出しに 適用されると、後でこの関数をデバッグする方法がないことです。 。


1) デバッグモードでコードを実行
2) ブレークポイントが発生した後、StepOver (F10) を 2 回実行

全て - これでIncrement 関数に「入る」方法はなくなり、手動で設定したブレークポイントはすべて発生せず、 StepInto 操作(F11)の代わりに StepOver(F10)が実際に実行されるようになりました。


投稿ありがとうございました。

修正方法

 
Roman:

コンパイラは全能ではありません、時にはあなたが関与する必要があります ))

どういうことだ? あなたは、あなたの構成がより速いと断言しましたが、そうではありません。 そのコードで呼び出される可能性が100倍低いだけなのです。
 
Alexey Navoykov:

最初のマクロでは、100回の繰り返しで1回しか関数が呼び出されて いません。 ですから、これはナンセンスです。

テストは、ここでは必要ない精度を選ぶのでなければ、プラスマイナスノーマルです。
100回SymbolInfoTickを呼び出すのと、1回SymbolInfoTickを呼び出して99回「手動」キャッシュを返すのを比較した場合。
標準の SymbolInfoTick 関数が 1 回のパスで複数回呼び出される場合に、現在のシンボルに対してこの関数を使用することがいかに不経済であるかを示しています。
この問題を解決する方法として、開発者は定義済みの変数を導入することを提案しています。

const MqlTick _Tick; // Текущий _Symbol-тик.



ただ、fxsaberが 全く説明せずに全てを書き込みに散りばめているのは、とんでもない事です。

 
Alexey Navoykov:

最初のマクロでは、100回の繰り返しで1回しか関数が呼び出されて いません。 ですから、これはナンセンスです。

彼の例は、MQLプログラムの様々な部分でbid/askデータを使用するもので、SymbolInfoTick()に頻繁にアクセスすればするほど、テスト性能は下がります。

TimeCurrent()のパフォーマンスに問題があることがわかり、いろいろと試してみて、捨てました。

グローバル変数の可視化はめったに使いませんが、テスターですべてを「飛ばす」ために、このような書き方をしています。

MqlTick Tick = {0};
#define  Ask Tick.ask
#define  Bid Tick.bid
#define  TimeCurrent_ Tick.time
//+------------------------------------------------------------------+
void OnTick()
{
   SymbolInfoTick(_Symbol,Tick);
  ....
}
 
Alexey Navoykov:
どういうことだ? 自分の設計の方が速いと断言したが、速くはない、そのコードで呼び出される可能性が100倍低いだけだ。

これは私の設計ではなく、その例から理解したように、マクロはテストのために1つずつ呼び出されるのです。
そしてパスレポートも一緒に表示され、トリミングされているとはいえ、実行時間がわかるようになっています。

 
Sergey Dzyublik:

検査は、必要ない精度にこだわらなければ、プラスマイナス普通です。
100回SymbolInfoTickを呼び出すのと、1回SymbolInfoTickを呼び出して99回「手動」キャッシュを返すのを比較した場合。

はい、キャッシュの件、了解しました。メモリ割り当てのことで何か揉めていたローマンですが、荒らしの件は正解だったようですね )

 
Alexey Navoykov:

キャッシュのことは知っています。ただ、ここのローマンがメモリ割り当てについて何かこすっていたので・・・荒らしの件は正解だったようです )

キャッシュはどこに割り当てられているのでしょうか?このドブスが。

 
Sergey Dzyublik:

検査は、必要ない精度にこだわらなければ、プラスマイナス普通です。
比較:100回SymbolInfoTickを呼び出すのと、1回SymbolInfoTickを呼び出して99回「手動」キャッシュを返すのとでは、比較にならない。
標準の SymbolInfoTick 関数が 1 回のパスで複数回呼び出される場合に、現在のシンボルに対してこの関数を使用することがいかに不経済であるかを示しています。
この問題を解決する方法として、開発者はあらかじめ定義された変数を導入することが推奨される。

私の言いたいことは100%伝わります。

理由は、fxsaber さんが説明もせずに全てを書き込みで拡散していたので、分かりにくかったからです。

すみません、うまく形にできないんです。