PLOの華麗さと貧しさ - ページ 7 1234567 新しいコメント Dmitry Fedoseev 2014.07.08 05:41 #61 見つけた!結局、PLOでなんとか高速化。はい!そのメリットは否定できません。 Dmitry Fedoseev 2014.07.08 05:42 #62 dimeon:じゃあ、全部アセンブリ言語で書こうよ。どうせなら、そのほうが早い。問題がよくわからない。1MBのコードを持つExpert Advisorやインジケータを見たことがない。また、関数の呼び出しにもある程度の時間がかかる。機能も捨てよう大規模なプロジェクトのコントロールは、OOPでより便利になりました。また、コードの実行速度は、ブローカーへのping送信時間やブローカーからの注文に対するレスポンスほど重要でないことが非常に多いのです。HFTのアルゴリズムを見てみましょう。最高速度が要求されますが、そこには複雑な計算は見当たりません。PS.A地点からB地点に移動するのに、普通はスーパーカーやスノーモービルは必要ありません。原付で十分です! ここに一人、関数を書く代わりに、ファイルにコードを書いてインクルードしている人がいます。 Alexey Navoykov 2014.07.08 05:58 #63 Integer:見つけた!結局、PLOでなんとか高速化。はい!そのメリットは否定できません。 では、その暗号は何だったのか。 Dmitry Fedoseev 2014.07.08 06:02 #64 meat: では、その暗号は何だったのか。iCustom() を、パラメータの数が異なる場合、パラメータの数ごとに異なるケース、またはOOPバリアントでパラメータの数ごとに異なるクラスで呼び出す こと。 Renat Fatkhullin 2014.07.08 13:14 #65 MQLコンパイラの新しいビルドでは、仮想メソッドチェーンの最終メソッドで、外部ライブラリへのリンクがない場合、仮想メソッドを直接呼び出しに置き換える最適化がすでに含まれています。この方法は、クラスを扱う多くのプログラムの仮想コールを簡素化し、高速化する。670ビルドの最初の投稿にあるtest.mq4の例の結果です。switch: 172 OOP: 312 32〜64msという極小の時間計測では動作しないため、ループを1000万回から5000万回に増やさなければならなかった。時間がmsで表示され、数字が小さいほどコードが高速であることを示します。同じコードに新しいコンパイラを適用したところ、このような結果になりました。switch: 157 OOP: 93 OOPは快勝した。でも、なぜ?まず、仮想メソッドを通常のメソッドにし、ジンラインを引いてゼロになるように最適化した。実際、関数の 呼び出しと本体は 完全に消え、純粋なループが残った。 mov int[i] <- int[0] $label: <- тут когда-то было тело, но оно оптимизировалось в ноль add int[i] <- int[i], int[1] jlt int[i], int[50000000] --> $label コンソールコンパイラの新しいベータ版を含むファイルが添付されています。MetaEditorの通常の670ビルド(コンパイラはビルトインされています)とコンソールコンパイラを使って、任意の例を比較することができます。これが証明すること。試されているのは、コンパイラのオプティマイザの品質である。テストは、実際にすべてがどのように最適化されているかを完全に理解した上で書かれるべきものである私が言ったように、コード最適化の特殊性を知らなければ、(OOPが突然勝つ)誤解を招く可能性があることを既存の例で示しました。 ファイル: test.mq4 9 kb Test.ex4 7 kb test_optimized.ex4 6 kb mql_exe.zip 1117 kb 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
見つけた!結局、PLOでなんとか高速化。はい!そのメリットは否定できません。
じゃあ、全部アセンブリ言語で書こうよ。どうせなら、そのほうが早い。
問題がよくわからない。1MBのコードを持つExpert Advisorやインジケータを見たことがない。
また、関数の呼び出しにもある程度の時間がかかる。機能も捨てよう
大規模なプロジェクトのコントロールは、OOPでより便利になりました。
また、コードの実行速度は、ブローカーへのping送信時間やブローカーからの注文に対するレスポンスほど重要でないことが非常に多いのです。
HFTのアルゴリズムを見てみましょう。最高速度が要求されますが、そこには複雑な計算は見当たりません。
PS.A地点からB地点に移動するのに、普通はスーパーカーやスノーモービルは必要ありません。原付で十分です!
見つけた!結局、PLOでなんとか高速化。はい!そのメリットは否定できません。
では、その暗号は何だったのか。
MQLコンパイラの新しいビルドでは、仮想メソッドチェーンの最終メソッドで、外部ライブラリへのリンクがない場合、仮想メソッドを直接呼び出しに置き換える最適化がすでに含まれています。
この方法は、クラスを扱う多くのプログラムの仮想コールを簡素化し、高速化する。
670ビルドの最初の投稿にあるtest.mq4の例の結果です。
32〜64msという極小の時間計測では動作しないため、ループを1000万回から5000万回に増やさなければならなかった。時間がmsで表示され、数字が小さいほどコードが高速であることを示します。
同じコードに新しいコンパイラを適用したところ、このような結果になりました。
OOPは快勝した。でも、なぜ?
まず、仮想メソッドを通常のメソッドにし、ジンラインを引いてゼロになるように最適化した。実際、関数の 呼び出しと本体は 完全に消え、純粋なループが残った。
コンソールコンパイラの新しいベータ版を含むファイルが添付されています。MetaEditorの通常の670ビルド(コンパイラはビルトインされています)とコンソールコンパイラを使って、任意の例を比較することができます。
これが証明すること。