Leinwand vs. Etiketten - Seite 9

 
Die Textausgabe an das Etikett ist 100 Mal schneller als die Textausgabe an die Leinwand, obwohl die Leinwand nicht einmal geleert wurde, sondern den Text auf den Text formte.
 
Alexey Viktorov:

Dimitri, bevor man etwas beurteilt, muss man verstehen, wo alles angefangen hat...

Wenn ich mich nicht irre, hieß es irgendwann einmal fünfzig Zeilen...

Wo hat das alles angefangen? Mit einer Pause von der Realität?

 
Dmitry Fedoseev:
Es ist 100-mal schneller, Text in ein Etikett auszugeben als in eine Leinwand, obwohl die Leinwand noch nicht einmal geleert, sondern Text auf Text gezeichnet wurde.

Ich werde demnächst Tests vorlegen, bei denen Kanvas ebenfalls schnell genug ist. Und ich werde auch den entsprechenden Quellcode in KB aktualisieren. Es geht darum, die Anzahl der Aktualisierungen pro Zeiteinheit zu begrenzen, wie ich später herausfand. Siehe die obigen Beiträge, dort wurde es diskutiert. Beginnen Sie mit diesem Beitrag: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.

 
Mihail Matkovskij:

Ich werde demnächst Tests vorstellen, bei denen Kanvas ebenfalls schnell genug ist. Und ich werde auch den entsprechenden Quellcode in KB aktualisieren. Es geht darum, die Anzahl der Aktualisierungen pro Zeiteinheit zu begrenzen, wie ich später herausfand. Siehe die obigen Beiträge, dort wurde es diskutiert. Beginnen Sie mit diesem Beitrag: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.

Und ich phantasiere nicht, ich messe die Leistung des Codes, die in der Realität gelten würde. Und es ist mir völlig egal, was und wo es gerendert wird, ich messe nur die endgültige Laufzeit des Programms.

 
Selbst ein rein dummer Vergleich mit nur einem Aufruf von TextOut() ist 70 Mal langsamer als die Ausgabe von Text auf dem Etikett.
 
Dmitry Fedoseev:

Und ich fantasiere nicht, sondern messe die Leistung eines Codes, der in der Realität angewendet würde.

Dmitry Fedoseev:
Selbst ein rein dummer Vergleich von nur einem Aufruf von TextOut() ist 70 Mal langsamer als die Ausgabe von Text in das Etikett.

Wenn Sie es nicht verstehen wollen oder können, hier ein Zitat:

Renat Fatkhullin:

Nikolai hat Recht - die Bearbeitung von Etiketteneigenschaften hat nichts mit dem Rendern des Etiketts zu tun.

Das Etikett wird, wie jedes andere Objekt auf dem Diagramm, in einem völlig anderen Thread und unabhängig vom Betrieb des MQL5-Programms gezeichnet. Der Roboter kann nur verlangen, dass das Diagramm noch einmal zwangsweise gerendert wird, aber er kann die Rendering-Zeit nicht messen. Das Zeichnen von Diagrammen mit Objekten erfolgt völlig asynchron.

Aber Rendering Leinwand ist einfach zu messen, wie es direkt in den Fluss des Roboters getan wird und dann während der unabhängigen Rendering des Diagramms bleibt es zu einem nativen BitBlit der Bitmap bereit im Kontext des Fensters zu tun. Dieser Vorgang ist elementar und wird von der Grafikkarte gut beschleunigt.

Bei Textbeschriftungen ist SetFont/TextOut in TTF-Schriften recht teuer.
 
Mihail Matkovskij:

Wenn Sie das nicht wollen oder nicht herausfinden können, erhalten Sie ein Angebot:

Und ich habe Ihnen bereits hier geantwortet

 
Dmitry Fedoseev:

Und ich habe Ihnen bereits hier geantwortet

Wollen Sie sichmit dem Direktor von MetaQuotes streiten?

 
Mihail Matkovskij:

Werden Sie sichmit dem Direktor von MetaQuotes streiten?

Wir haben keine Meinungsverschiedenheiten.

 
Dmitry Fedoseev:
Selbst ein rein dummer Vergleich mit nur einem Aufruf von TextOut() ist 70 Mal langsamer als die Ausgabe von Text auf dem Etikett.

Das liegt daran, dass das Rendering des Diagramms in einem separaten Thread durchgeführt wird. Die Verarbeitung des Pixelarrays fürOBJ_BITMAP_LABEL findet hingegen im selben Thread statt wie die Anwendung, die es verwendet, und auch die Übergabe der Pixel an die Bitmap. Daher kann OBJ_BITMAP_LABEL die Anwendung verlangsamen, aber nicht wesentlich, wenn die Bitmap nicht zu oft aktualisiert wird. Nur in meinen früheren Tests verursachte OBJ_BITMAP_LABEL aus demselben Grund erhebliche Verlangsamungen. Wenn Sie jedoch die Häufigkeit der Bitmap-Aktualisierung begrenzen, ist das Ergebnis sogar noch besser als bei Etiketten. Und wenn Sie die Bitmap-Aktualisierungsrate begrenzen, wird sie etwas schneller sein alsOBJ_BITMAP_LABEL (aufgrund des Renderings in einem separaten Thread).Es macht einfach keinen Sinn, Objekte häufiger zu aktualisieren, als das menschliche Auge wahrnehmen kann. Daher die Verzögerungen, alle Objekte in der Tabelle, wenn Sie sie zu oft aktualisieren.