Fehler, Irrtümer, Fragen - Seite 975

 

Ich nehme das zurück. Die Leistung von Bitmaps ist um 16 % bis 25 % geringer als die von Tags (je nach Anzahl der Elemente), aber nicht um eine Größenordnung, wie ich bereits schrieb.

Wahrscheinlich gab es beim ersten Erlernen des Tools Fehler/Unzulänglichkeiten im Code.

Der Code ist beigefügt.

tol64

Glauben Sie mir,ich habe kein einziges Motiv, Sie = mich zu täuschen. In meinem ersten Experiment habe ich eine Bitmap im Prüfgerät beobachtet. Leider kann ich das nicht reproduzieren. :(

Dateien:
 
voix_kas:

...

tol64

Glauben Sie mir,ich habe kein einziges Motiv, Sie = mich zu täuschen. In meinem ersten Experiment habe ich eine Bitmap im Prüfgerät beobachtet. Leider kann ich das nicht reproduzieren. :(

Gut. Warten wir, bis die Entwickler diese Funktion implementiert haben, und dann werden wir sie richtig testen. )))
 

Ich möchte die Entwickler auch auf die Unterschiede bei der Darstellung von Schriftarten aufmerksam machen:


Auf der linken Seite ist die Bitmap und auf der rechten Seite die Beschriftung zu sehen. Beider Bitmap ist die Schrift etwas fetter, obwohl alle Einstellungen gleich sind.

Die Frage ist nicht kritisch. Aber für Ordnung ist gesorgt. :)

 
voix_kas:

Ich möchte die Entwickler auch auf die Unterschiede bei der Anzeige von Schriftarten aufmerksam machen

Auf der linken Seite ist die Bitmap, auf der rechten Seite die Beschriftungen. DieBitmap hat eine etwas fettere Schrift, obwohl alle Einstellungen die gleichen sind.

Das Thema ist nicht kritisch. Aber für die Ordnung ist es notwendig, aufmerksam zu sein. :)

Und welches Flag zum Einstellen der Schriftdicke haben Sie für die Bitmap verwendet?
 
voix_kas:

Ich nehme das zurück. Die Leistung von Bitmaps ist 16%-25% schlechter als die von Tags (je nach Anzahl der Elemente), aber nicht um eine Größenordnung, wie ich bereits schrieb.


Nein. Dennoch ist Ihr Test falsch.

Sie verwenden ChartRedraw nach jeder Änderung. Sie testen also in der Tat 10000 Mal ChartRedraw. Das ist nicht richtig.

Die Aufgabe besteht darin, herauszufinden, was sich schneller ändert - Etiketten oder Bitmaps. Und nicht ihr späterer Output auf der Karte.

Hier sind die Testergebnisse, wenn Sie ChartRedraw innerhalb einer Schleife lassen.

Bitmap-Aktualisierungszeit = 40980.
Zeit für die Aktualisierung der Etiketten = 41777.

(d. h. Bitmap ist sogar etwas schneller als Etiketten).

Und ich möchte Sie darauf hinweisen, dass die Anzahl der Beschriftungen und die Bitmap-Breite in Anwesenheit von ChartRedraw innerhalb einer Schleife - keinen Einfluss hat. Daher ist die Funktion ChartRedraw in dieser Situation am langsamsten.

---

Wenn Sie ChartRedraw aus der Schleife entfernen, erhalten Sie völlig andere Zahlen

Bitmap-Auffrischungszeit = 5788.
Zeitpunkt der Aktualisierung der Etiketten = 234.

Das Terminal mit den Tags ist also 20 Mal schneller als die Bitmap


und hier kann man natürlich schon die Abhängigkeit der Bitmap-Höhe sehen. für 100 Mark:

Bitmap-Aktualisierungszeit = 51355.
Zeitpunkt der Aktualisierung der Etiketten = 1108.
50-facher Unterschied

und hier ist eine Bitmap mit der Größe 250*20. d.h. die Koordinaten der Markierungen dürfen nicht verändert werden.

erhalten wir

Bitmap-Auffrischungszeit = 25054.

Die Differenz zu den Hundertermarken beträgt das 25-fache.


Wie Sie also sehen, ist die Bitmap wirklich langsam, was die Arbeit mit ihr angeht.

eindeutig, dass ständige zyklische Arbeit mit Arrays + WinGdi TextOut + Erstellung von ResourceCreate = schlechter als native MT-Objekte von mindestens einer Ordnung, oder sogar 50 mal.

Deshalb sollten Sie MT-Objekte nicht ablehnen. Es ist wahrscheinlich sehr praktisch für die Erstellung von Diagrammen und Histogrammen.

Документация по MQL5: Операции с графиками / ChartRedraw
Документация по MQL5: Операции с графиками / ChartRedraw
  • www.mql5.com
Операции с графиками / ChartRedraw - Документация по MQL5
 
tol64:
Und welches Flag zum Einstellen der Schriftdicke haben Sie für die Bitmap verwendet?

Der Standardwert ist 0, ich stelle ihn nicht explizit ein. Sie können es im beigefügten Quellcode sehen.

Auch das zusätzliche "Spielen" mit verschiedenen Flaggen führte nicht zu einer Vereinheitlichung.

 
sergeev:

...

Ziel ist es, herauszufinden, ob sich Etiketten oder Bitmaps schneller ändern. Nicht ihre anschließende Ausgabe in der Karte.

...

Die Entfernung der Funktion ChartRedraw() aus der Schleife ist nicht korrekt, da die "atomare Operation" der Änderung der Textlabel-Eigenschaft in keiner Weise vom Videomotor des Terminals verarbeitet wird.

Nur beim Aufruf von ChartRedraw() wird das gesamte Fenster gezeichnet, einschließlich der gegenseitigen Überlappung von Alphakanal-Bildern aus verschiedenen Objekten.

Diese Hypothese wird durch den Code-Profiler für das Skript mit Textbeschriftungen eindeutig bestätigt.

Was die Bitmap betrifft, so ist der Engpass die Funktion TextOut().

 
voix_kas:

...

Was die Bitmap betrifft, so ist der Engpass die Funktion TextOut().

Das ist noch deutlicher: ))

 
tol64:

Das ist der Weg, um es klarer zu machen: ))

Ich stimme zu. :)

sergeev:

...

Hier sind die Testergebnisse, wenn Sie ChartRedraw innerhalb der Schleife lassen.

Bitmap-Aktualisierungszeit = 40980.
Zeit zur Aktualisierung der Etiketten = 41777.

(d. h. die Bitmap ist sogar etwas schneller als die Tags)

Seltsam, ich habe das gegenteilige Bild:

 

Argb_normalize sollte nicht verwendet werden, da es zusätzliche Kosten für die Farbnormalisierung verursacht. Es ist besser, einfache Dinge in reinen Farben zu malen.

Auch die Geschwindigkeit wird direkt und stark von der Grafikkarte beeinflusst, da wir ihre 2D-Funktionen voll ausnutzen. Auf schwachen Laptops mit rudimentären Grafikkarten zum Beispiel ist das Rendering langsam und die Unterschiede bei den Ausgabemethoden sind groß.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5