よくやった。
100,000回の反復ループの目的は、平均化された使用可能な時間値(ms単位)を得ることです。iBarShift()はオブジェクトの初期化を必要とし、この初期化はループの中でカウントされるのではなく、ループの外でカウントされます。 いずれにせよ、すべての値をメモリに保持する方が、毎回計算するよりも高速であることは確かです。
ちなみに、参考ベンチマークで言及されているiBarShiftFastは、以下のようにシンプルに改良できる:
(Bars(symbol, timeframe, time, D'2100.01.01') - 1)
その改良とは、SeriesInfoIntegerを 完全に 削除 し、遠い将来の定数の日付を使用 することである 。
よくやった。
100,000回の反復ループの目的は、平均化された使用可能な時間値(ms単位)を得ることです。iBarShift()はオブジェクトの初期化を必要とし、この初期化はループの中でカウントされるのではなく、ループの外でカウントされます。 いずれにせよ、すべての値をメモリに保持する方が、毎回計算するよりも高速であることは確かです。
ありがとう!:)
しかし、2番目のベンチマークでiBarShiftを直接呼び出しているのは、オブジェクトをインスタンス化しているからです。パフォーマンス・モード」も、ホットパス・オペレーション内でのデータ・アクセスのみと考えれば、公平な比較となる。
ところで、私は今テストを行ったところだが、これを読んでいる人のためにもう一度明記しておきたい:この方法は、データ更新とデータ呼び出しを別々の経路に分離する場合、または 時系列関数 呼び出しの組み合わせをバーごとに合計300回以上呼び出す場合にのみ 高速になります。つまり、~300回の反復が損益分岐点となります。もし1小節あたり300回以上呼び出さず、「ホットパス」を使用していないのであれば、他の方法を使用した方がよいでしょう。
iBarShift benchmark based on 100000 runs. ======================================================= iBarShift(Alain Verleyen) for 2017.04.11 19:56:37 is 45723 in 338.868 milliseconds. ------------------------------------------------------------- iBarShift3 for 2017.04.11 19:56:37 is 45723 in 0.492 milliseconds. ------------------------------------------------------------- iBarShift(direct function call) for 2017.04.11 19:56:37 is 45723 in 38.712 milliseconds. ------------------------------------------------------------- iBar.Shift(performance mode) for 2017.04.11 19:56:37 is 45723 in 3.403 milliseconds. -------------------------------------------------------------
この記事は、ヴォルフガング・シュトゥットガルトで開催されたヴォルフガング・シュトゥットガルト国際映画祭で上映されたものです。
fxsaber, 2017.05.25 13:23
iBarShift benchmark based on 100000 runs. ======================================================= iBarShift(Alain Verleyen) for 2017.04.11 19:56:37 is 45723 in 338.868 milliseconds. ------------------------------------------------------------- iBarShift3 for 2017.04.11 19:56:37 is 45723 in 0.492 milliseconds. ------------------------------------------------------------- iBarShift(direct function call) for 2017.04.11 19:56:37 is 45723 in 38.712 milliseconds. ------------------------------------------------------------- iBar.Shift(performance mode) for 2017.04.11 19:56:37 is 45723 in 3.403 milliseconds. -------------------------------------------------------------
マジで?ただのトリックだよ。
このパフォーマンステストは、ライブラリーの作者自身が書いたものだ。
少しユーモアを交えた例を見ると、テストは少し違うものであるべきだということがわかる。+ さらに、このテスト関数の別の実装も見てみよう。
この性能テストはライブラリーの作者によって書かれた。
少しユーモアを交えた例は、テストが多少異なるはずであることを示している。+ その他の実装検証機能。
その通りだ。このテストは、ベンチマークAlainを反映するように設計されています。このアルゴリズムの実世界での使用をより正確にシミュレートするために、タイムシフトを加えた例を示します。
その通りだ。このテストはアランのベンチマークを反映するように設計されている。このアルゴリズムの実世界での使用をより正確にシミュレートするために、タイムシフトを使った例を示します。
テスター/オプティマイザー(だけ)には高性能が必要です。
テスター/オプティマイザーでのライブラリの比較結果を示してください。
テスター/オプティマイザー(のみ)で高いパフォーマンスが必要です。
あなたのライブラリのテスター/オプティマイザーでの比較結果を示してください。
...多くのオブジェクトからなる複雑な構造にも必要です。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
時間に厳密なアプリケーションiTimeSeries:
この時系列ライブラリは、MQL4 に使い慣れたメソッド (例: iBarShift) を実装しながら、時間に厳密なアプリケーションを、MQL5の高速時系列アクセスにもたらします。
作者: nicholishen