キャンバスとラベルの比較 - ページ 13 1...6789101112131415161718 新しいコメント Andrey Khatimlianskii 2021.03.15 08:45 #121 Nikolai Semko:あ、じゃあ全然普通なんですね。 また、私のgifにはキャンバスが1つありますが、頻繁に再描画する必要がなく、新しいバーが入る瞬間をキャッチできるため、最もリソースを消費しないパネルです。素晴らしい全ては飛んでいる! また、低速域ではスキップすることなく更新されます。 Mihail Matkovskij 2021.03.15 11:09 #122 Dmitry Fedoseev: 正しいファイルが見つかりました。どこの、どのタイミングで数字を見ればいいのかは不明ですが、それを抜きにしても、キャンバスの速度が格段に上がっていることがわかりますし、1レブルではなく1キャンバス、ラベルの束ではなく、1キャンバスになっています。 エキスパートCanvasVsLabels.mq5を実行し、表示タイプoutTypeを 選択、limit_fpsを 有効化、nIterationsを 設定、デフォルトでは10000です。これで十分ですので、変更する必要はありません。そうすると、今回紹介したのと同じような結果になります。 https://www.mql5.com/ru/forum/364640/page11#comment_21301589。 Min delay,Mid delay,Max delayは それぞれ1回の実行における最小 遅延、平均遅延、 最大 遅延です。Total, は、nIterations パスの総数に対する合計時間です。 改めて、比較結果を 表にしてみました。 キャンバス無制限fps キャンバス限定fps ラベル 無制限fps レーベル限定fps 最小遅延時間 (μs) 1530 1 18 0 中間遅延時間 (μs) 7674 4086 48 7 最大遅延時間(μs) 11967 11093 785 286 合計(μs) 77727510 29452299 39648984 27439654 テスターでも全く同じ測定ができるように設計されています。でも、まだやっていないんです。暇な時にでもやってみます。今後、多くのBitmabLabelsを表示する実験をしていく予定です。 Canvas vs Labels fxsaber 2021.03.15 11:40 #123 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム キャンバスとラベルの比較 fxsaber, 2021.03.13 19:26 こんな結果になってしまったのは私だけ? fxsaber:15~20%奪います。どうやら私のビデオカードは遅すぎるようです。 ResourceReadImageは非常に遅いことが判明しました。負荷がゼロになった。 Mihail Matkovskij 2021.03.15 12:30 #124 もう一度、比較表を掲載しますが、今回はヒストグラムを掲載します。 キャンバス無制限fps キャンバス限定fps ラベル 無制限fps レーベル限定fps 最小遅延時間 (μs) 1530 1 18 0 中間遅延時間 (μs) 7674 4086 48 7 最大遅延時間(μs) 11967 11093 785 286 合計(μs) 77727510 29452299 39648984 27439654 パスごとの平均遅延値の比較 なぜか総走行時間(Total)とは比較にならないが...。 総実行時間の比較 計測の結果、FPSに制限のあるCanvasベースの表示(Canvas unlimited FPS)は、FPSに制限のある Labelsベースの表示(Labels unlimited FPS)よりも若干遅くなることがわかりました。しかし、一般的には、どちらも負荷の高いプロセスの情報を表示するのに適している。 Expert Advisor を実行して計測を行う方法 キャンバスまたはラベルのドロップダウンリストから、outTypeを 選択します。 limit_fps のオン/オフを設定します。 選択内容を確認する Start ボタンを押すと、チャートの計測を開始します 同様に、Expert Advisorでもビジュアルテスターで計測することができます。ただし、入力パラメータnIterationsの 値と少なくとも同じ数のバーが履歴に残るように、テスターの設定で日付範囲を設定する必要があります。 詳細な情報およびソースは、Chart Display libraryの説明で見ることができます: https://www.mql5.com/ru/code/33898 測定用に特別に改良されたライブラリhttps://www.mql5.com/ru/code/download/33898/chartdisplay.mqh 測定のユニバーサルエキスパート: https://www.mql5.com/ru/code/download/33898/canvasvslabels.mq5 詳しくはKB: https://www.mql5.com/ru/code/33898 をご覧ください。 このスレッドの最初の投稿で、新しいExpert Advisorで行った正しい測定結果を追加したいと思います。今ある測定値が正しくないので。しかし、最初のメッセージは、残念ながら、もう編集することができません。モデレーターの方々には、もっと正しい測定 値を冒頭に追加していただき、今あるものは無関係とマークしていただくようお願い します。 Дисплей с оптимизацией для вывода текста в чарт по типу консоли www.mql5.com Данная библиотека позволяет создавать дисплеи для удобного вывода текстовой информации в чарт с наиболее оптимальной скоростью Canvas vs Labels Nikolai Semko 2021.03.15 14:39 #125 fxsaber: ResourceReadImageは非常に遅いことが判明しました。処分した - 負荷ゼロ マジで?自分へのサプライズ同じサイズの普通のuint配列をコピーするのと比べて、どのくらい遅くなるのでしょうか? Dmitry Fedoseev 2021.03.15 15:24 #126 Mihail Matkovskij:実行中のエキスパートCanvasVsLabels.mq5... 何が言いたいの?今はコードを掘り下げたくないんです。これらの数値はどのように算出されているのでしょうか?テスターでテストする場合、実行に費やされた総時間を測定し、それ以外のことは測定しないようにすべきですが、個々のコードフラグメントのパフォーマンスは測定しません。極端な話、イナイレはカウントしないでください。そしてなんと、計測をしなくても、kanvasの方が遅いことがわかるのです。何か異常があるのでは...? fxsaber 2021.03.15 15:33 #127 Nikolai Semko: そうなんですか? 自分へのサプライズ 同じサイズの普通のuint配列をコピーするのと比べて、どのくらい遅くなるのでしょうか? 通話ありの場合は15%程度の負荷、通話なしの場合はゼロでした。 Mihail Matkovskij 2021.03.15 15:52 #128 Dmitry Fedoseev:何が言いたいの?今はコードを掘り下げたくないんです。この数値はどのように算出されているのでしょうか?そのようにテスターでテストする場合、実行に費やした総時間とそれ以外を測定すべきであり、別々のコードフラグメントのパフォーマンスを測定すべきではありません。極端な話、イナイレはカウントしないでください。そして、ここでは計測しなくても、kanvasの方が遅いことがわかります。何か異常があるのでは...?コードを掘り下げるのは嫌だ。私も鵜呑みにはしたくありません。:)どう説明したらいいのかわからない。私がどのようにコードを書いたか、最初から最後までお話しします...。一本の記事になりますよ。:)それに、専門家がどうやって測定しているのか、まったく理解できない。//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void run() { MqlRates rates[]; int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); ulong start, min, mid, max; ulong last, delay; static ulong totalDelays = 0; static int nTick = 0; ulong first; if (!triggerBtn.State()) return; start = GetMicrosecondCount(); min = INT_MAX; mid = 0; max = 0; if (CopyRates(NULL, PERIOD_CURRENT, 0, nIterations, rates) != nIterations) { triggerBtn.State(false); triggerBtn.setText("Start"); Print("Not enough quotes!"); Comment("Not enough quotes!"); return; } for (int i = nIterations - 1; i >= 0 && triggerBtn.State(); i--) { first = GetMicrosecondCount(); display.push(); display.setText(concatenate(i)); display.update(); last = GetMicrosecondCount(); delay = last - first; if (delay < min) min = delay; if (delay > max) max = delay; nTick++; totalDelays += delay; mid = totalDelays / nTick; Comment("Min delay: " + (string)min + " μs\n" "Mid delay: " + (string)mid + " μs\n" "Max delay: " + (string)max + " μs\n" "Total: " + (string)(GetMicrosecondCount() - start) + " μs" + " \n" "Completed: " + (string)(int)(100.0 / nIterations * (nIterations - i)) + "%"); } printf("Min delay: %d μs", min); printf("Mid delay: %d μs", mid); printf("Max delay: %d μs", max); printf("Total: %d μs", GetMicrosecondCount() - start); triggerBtn.State(false); triggerBtn.setText("Start"); ChartRedraw(); } Totalはループの最後で、min, mid, maxはループの本体で、display.push, display.setText, display.updateの後に計算されます。何も難しいことはなく、腰を据えてすべてをじっくり見れば、少なくともKanvasとLabelsのソースコードにはたどり着けるはずです。ちなみに、そこも複雑なことは何もないんですよ。Kanvasのベジェ曲線などを 描画するメソッドは除く。 Mihail Matkovskij 2021.03.15 16:06 #129 Dmitry Fedoseev:そして、ここでは計測を行わずに、カンヴァスの方が遅いということがわかります。何か異常があるのでは...? どのような入力パラメータでKanvasが遅くなるのか、教えてください。limit_fps: falseなら当然ですが...。:) Renat Fatkhullin 2021.03.15 16:49 #130 fxsaber: ResourceReadImageは非常に遅いことが判明しました。処分して負荷ゼロに。 コンパイル時に保存したリソースから読み出す場合は、1回で済みます。 リソースはコンパイル時に圧縮されます。 1...6789101112131415161718 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あ、じゃあ全然普通なんですね。
また、私のgifにはキャンバスが1つありますが、頻繁に再描画する必要がなく、新しいバーが入る瞬間をキャッチできるため、最もリソースを消費しないパネルです。
素晴らしい全ては飛んでいる!
また、低速域ではスキップすることなく更新されます。正しいファイルが見つかりました。どこの、どのタイミングで数字を見ればいいのかは不明ですが、それを抜きにしても、キャンバスの速度が格段に上がっていることがわかりますし、1レブルではなく1キャンバス、ラベルの束ではなく、1キャンバスになっています。
エキスパートCanvasVsLabels.mq5を実行し、表示タイプoutTypeを 選択、limit_fpsを 有効化、nIterationsを 設定、デフォルトでは10000です。これで十分ですので、変更する必要はありません。そうすると、今回紹介したのと同じような結果になります。 https://www.mql5.com/ru/forum/364640/page11#comment_21301589。
Min delay,Mid delay,Max delayは それぞれ1回の実行における最小 遅延、平均遅延、 最大 遅延です。Total, は、nIterations パスの総数に対する合計時間です。
改めて、比較結果を 表にしてみました。
テスターでも全く同じ測定ができるように設計されています。でも、まだやっていないんです。暇な時にでもやってみます。今後、多くのBitmabLabelsを表示する実験をしていく予定です。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
キャンバスとラベルの比較
fxsaber, 2021.03.13 19:26
こんな結果になってしまったのは私だけ?
15~20%奪います。どうやら私のビデオカードは遅すぎるようです。
ResourceReadImageは非常に遅いことが判明しました。負荷がゼロになった。
もう一度、比較表を掲載しますが、今回はヒストグラムを掲載します。
パスごとの平均遅延値の比較
なぜか総走行時間(Total)とは比較にならないが...。
総実行時間の比較
計測の結果、FPSに制限のあるCanvasベースの表示(Canvas unlimited FPS)は、FPSに制限のある Labelsベースの表示(Labels unlimited FPS)よりも若干遅くなることがわかりました。しかし、一般的には、どちらも負荷の高いプロセスの情報を表示するのに適している。
Expert Advisor を実行して計測を行う方法
同様に、Expert Advisorでもビジュアルテスターで計測することができます。ただし、入力パラメータnIterationsの 値と少なくとも同じ数のバーが履歴に残るように、テスターの設定で日付範囲を設定する必要があります。
詳細な情報およびソースは、Chart Display libraryの説明で見ることができます: https://www.mql5.com/ru/code/33898
測定用に特別に改良されたライブラリhttps://www.mql5.com/ru/code/download/33898/chartdisplay.mqh
測定のユニバーサルエキスパート: https://www.mql5.com/ru/code/download/33898/canvasvslabels.mq5
詳しくはKB: https://www.mql5.com/ru/code/33898 をご覧ください。
このスレッドの最初の投稿で、新しいExpert Advisorで行った正しい測定結果を追加したいと思います。今ある測定値が正しくないので。しかし、最初のメッセージは、残念ながら、もう編集することができません。モデレーターの方々には、もっと正しい測定 値を冒頭に追加していただき、今あるものは無関係とマークしていただくようお願い します。
ResourceReadImageは非常に遅いことが判明しました。処分した - 負荷ゼロ
実行中のエキスパートCanvasVsLabels.mq5...
何が言いたいの?今はコードを掘り下げたくないんです。これらの数値はどのように算出されているのでしょうか?テスターでテストする場合、実行に費やされた総時間を測定し、それ以外のことは測定しないようにすべきですが、個々のコードフラグメントのパフォーマンスは測定しません。極端な話、イナイレはカウントしないでください。そしてなんと、計測をしなくても、kanvasの方が遅いことがわかるのです。何か異常があるのでは...?
そうなんですか?
通話ありの場合は15%程度の負荷、通話なしの場合はゼロでした。
何が言いたいの?今はコードを掘り下げたくないんです。この数値はどのように算出されているのでしょうか?そのようにテスターでテストする場合、実行に費やした総時間とそれ以外を測定すべきであり、別々のコードフラグメントのパフォーマンスを測定すべきではありません。極端な話、イナイレはカウントしないでください。そして、ここでは計測しなくても、kanvasの方が遅いことがわかります。何か異常があるのでは...?
コードを掘り下げるのは嫌だ。私も鵜呑みにはしたくありません。:)どう説明したらいいのかわからない。私がどのようにコードを書いたか、最初から最後までお話しします...。一本の記事になりますよ。:)
それに、専門家がどうやって測定しているのか、まったく理解できない。
Totalはループの最後で、min, mid, maxはループの本体で、display.push, display.setText, display.updateの後に計算されます。何も難しいことはなく、腰を据えてすべてをじっくり見れば、少なくともKanvasとLabelsのソースコードにはたどり着けるはずです。ちなみに、そこも複雑なことは何もないんですよ。Kanvasのベジェ曲線などを 描画するメソッドは除く。そして、ここでは計測を行わずに、カンヴァスの方が遅いということがわかります。何か異常があるのでは...?
どのような入力パラメータでKanvasが遅くなるのか、教えてください。limit_fps: falseなら当然ですが...。:)
ResourceReadImageは非常に遅いことが判明しました。処分して負荷ゼロに。
コンパイル時に保存したリソースから読み出す場合は、1回で済みます。
リソースはコンパイル時に圧縮されます。