Ich verstehe nicht, warum der Vergleich im Visualiser und nicht im Terminal durchgeführt wurde?
Ich habe mir den Code nicht angesehen. Für solche Aufgaben ist Kanvas eine für alle "50 Linien".
Im Terminal habe ich über die Usage-Bibble gemessen. Die Methoden weisen keine signifikanten Unterschiede auf.
Ich verstehe nicht, warum der Vergleich im Visualiser und nicht im Terminal durchgeführt wurde?
Denn im Visualiser ist es die langsame Geschwindigkeit von Canvas, die die Probleme verursacht. Und Sie können sehen, was sie sind. Eine solche Anzeige frisst mehr als 50 % der CPU-Zeit, ich habe es oben erwähnt! Und in Terminal müssten Sie die Methoden in einer Schleife aufrufen, um alles zu sehen. Aber ich habe mich nicht darum gekümmert. Ich habe einen Expert Advisor in der Schleife mit Offline-Optimierung laufen, wo ich eigentlich eine solche Anzeige mit schnellen Updates brauche. Aber ich bin noch nicht so weit, es zu zeigen, weil das Projekt noch nicht abgeschlossen ist.
Ich habe mir den Code nicht angesehen. Für solche Aufgaben ist Kanvas eine für alle "50 Linien".
Dann schauen Sie doch mal rein. Es ist das einzige dort!
Du willst es mir wirklich unter die Nase reiben, nicht wahr?
Ich wusste, dass du so etwas tun würdest. Und ich wusste, dass du dir so etwas ausdenken würdest.
Sie wissen nicht, wie man Vergleichstests vorbereitet.
Denn im Visualiser ist es die langsame Geschwindigkeit von Canvas, die die Probleme verursacht. Und Sie können sehen, welche das sind. Eine solche Anzeige frisst mehr als 50 % der CPU-Zeit, ich habe es oben erwähnt! Und in Terminal müssten Sie die Methoden in einer Schleife aufrufen, um alles zu sehen. Aber ich habe mich nicht darum gekümmert. Ich habe einen Expert Advisor in der Schleife mit Offline-Optimierung laufen, wo ich eigentlich eine solche Anzeige mit schnellen Updates brauche. Aber ich bin noch nicht so weit, es zu präsentieren, da das Projekt noch nicht abgeschlossen ist.
Dann schauen Sie es sich an. Es ist das einzige dort!
Nun... wenn Sie nur für einen Visualisierer schreiben, dann spielen Sie diese Spiele alleine. Haben Sie noch nie davon gehört, dass Grafiken, selbst Markierungen zum Öffnen/Schließen von Positionen, den Renderer verlangsamen? Nein.
Ich werde versuchen, Sie nicht zu stören... erstellen Sie separate Etiketten für jeden Buchstaben... und auch eine separate Ressource...
Sie führen die Leute in die Irre.
Du willst es mir unter die Nase reiben, nicht wahr?
Ich wusste, dass du so etwas tun würdest. Ich wusste, dass du so etwas tun würdest.
Sie wissen nicht, wie man Vergleichstests vorbereitet.
Alles, was ich aus Ihrem Beitrag verstanden habe, waren die Worte "Täuschung", "LOL" und "Ich weiß nicht, wie man Tests vorbereitet". Ich verstehe wirklich nicht, was sie mit diesem Thema zu tun haben... Den Rest verstehe ich von dem Wort "überhaupt" nicht! Als ich diesen Thread eröffnete, wollte ich hierkonstruktive Kritik sehen, nicht einen Haufen unverständlicher Behauptungen! Machen Sie sich also die Mühe, Ihre Worte zu erklären. Ansonsten schreiben Sie hier keinen Unsinn!
Nun... wenn Sie nur für den Visualisierer schreiben, dann spielen Sie diese Spiele allein. Haben Sie noch nie gehört, dass Grafiken, selbst Positionsmarkierungen zum Öffnen/Schließen, den Visualizer verlangsamen? Nein.
Ich werde versuchen, Sie nicht zu stören... erstellen Sie separate Etiketten für jeden Buchstaben... und auch eine separate Ressource...
Ich beeilte mich, Sie zu informieren, Alexej. Sie neigen natürlich zum Phantasieren, genau wie Nikolai... Aber es ist nicht wirklich so, wie Sie es sich vorstellen. Es ist ganz einfach so, dass für unterschiedliche Aufgaben unterschiedliche Lösungen erforderlich sind. Haben Sie und Nikolai irgendwelche substanziellen Kommentare?
Alles, was ich aus Ihrem Beitrag verstanden habe, waren die Worte "Täuschung", "LOL" und "Ich weiß nicht, wie man Tests vorbereitet". Ich verstehe wirklich nicht, was sie mit diesem Thema zu tun haben... Den Rest verstehe ich von dem Wort "überhaupt" nicht! Als ich diesen Thread eröffnete, wollte ich hierkonstruktive Kritik sehen, nicht einen Haufen unverständlicher Behauptungen! Machen Sie sich also die Mühe, Ihre Worte zu erklären. Ansonsten schreiben Sie hier keinen Unsinn!
Geduld, mein Freund, Geduld.
Fahren Sie fort. Verstehen Sie erst einmal den Coderichtig, denn der Code ist eine komplizierte Sache, und ich brauche klar begründete Forderungen!
Fahren Sie fort. Aber verstehen Sie erst einmal den Coderichtig, denn Code ist eine komplizierte Sache, und ich brauche eine klare argumentative Aussage!
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich möchte Ihnen einen Vergleich der Geschwindigkeit von Displays für die Anzeige von Text im Diagramm vorstellen, die mit verschiedenen Methoden erstellt wurden. Die erste Variante der Anzeige habe ich mit der CCanvas-Klasse erstellt, die zweite mit Labels (CChartObjectLabel). Alle Klassen wurden der Standardbibliothek entnommen. Diese Idee kam mir, als ich eine Anzeige auf CCanvas erstellte und mein Expert Advisor dadurch erheblich verlangsamt wurde. Zur gleichen Zeit, einige Programmierer behauptet, dass ich falsch war undCCanvas, und um genauer zu sein, OBJ_BITMAP_LABEL ist sehr schnell, schneller als alle Methoden der Anzeige von Informationen in der Tabelle in MetaTrader.Also beschloss ich, dies experimentell zu überprüfen. Der Moment der Wahrheit also.
Bedienung der Anzeige mit Ausgabe imCCanvas
CPU-Auslastung in diesem Moment
Bedienung der Anzeige mitCChartObjectLabel-Ausgabe
Betrieb vonCChartObjectLabel mit CChartObjectLabel mit aktiviertem Geschwindigkeitsoptimierungsmodus (ich werde weiter unten darüber berichten).
Nun zu den Zeitwerten. Total ist die Gesamtlaufzeit des Testexpertenberaters. Min delay,Mid delay undMax delay sindVerzögerungszeiten in Ticks. Aber sie können nicht immer korrekt erhalten werden, obwohl ich den Code überprüft habe und es keine Fehler gab. Ich denke, es hat mit der Funktion GetTickCount64 im Tester zu tun. Aber das ist ein unbedeutendes Problem. Die Hauptsache ist, dass die Gesamtzeit angezeigt wird.
Lassen Sie mich nun kurz auf die Optimierung der Anzeige auf Etiketten eingehen. Damit der Text auf dem Bildschirm erscheint, müssen Sie Zeilen aus einer speziellen Reihe von Zeilen in Etiketten anzeigen, die von oben nach unten in der Anzahl von 50 Stück angeordnet sind. Wenn jedoch nur die letzte Zeile aktualisiert wird, ist es nicht notwendig, alle Etiketten zu aktualisieren, sondern es reicht aus, nur ein Etikett zu aktualisieren, das dieser Zeile entspricht. Schalten Sie den OptimizeUpdate-Modus ein, und Sie erhalten einen Leistungsgewinn von mehr als dem Doppelten.
Ich habe beschlossen, die Anzeige auf Etiketten genauer zu testen, da dieser Testzeitraum aufgrund der Geschwindigkeit zu kurz ist. Deshalb habe ich den Testzeitraum verlängert. Und erhielt die folgenden Ergebnisse.
OhneoptimizeUpdate: false
MitoptimizeUpdate: true
Ich habe alle Ergebnisse zu Excel hinzugefügt
Das erste Histogramm zeigt den Gesamtvergleich, das zweite Histogramm zeigt nur die Variante mit Etiketten.
Fazit: Die auf CChartObjectLabel erstellte Anzeige kann 83,7 Mal schneller sein als die entsprechende Anzeige auf CCanvas. Nicht umsonst gelten Pixeloperationen als die kostspieligsten in allen Programmen!
Ich füge eine Tabelle mit den Testergebnissen bei. DerQuellcode kann von KB heruntergeladen werden:https://www.mql5.com/ru/code/33898