DirectX - Seite 8

 
Реter Konow:

Gestern habe ich ein Beispiel für einen Tumbler gemacht, bei dem die Zellen unabhängig von der gesamten Fensterfläche neu gezeichnet werden:https://www.mql5.com/ru/forum/333652/page4

Es zeigt sich, dass das getrennte Neuzeichnen von Zellen die Last in Grenzen von 20% hält (auf Video mehr wegen der Videoaufzeichnung), und zwar IMMER, wenn die Zellen die ganze Zeit und mit 40 fps neu gezeichnet werden. Bei normaler Tumblerdynamik werden bei diesem Ansatz etwa 5-10% geladen.

Die Belastung ist nur dann hoch, wenn ein großer Bereich (~500*500 px) mit hoher Geschwindigkeit ohne Pausen (~40+ fps) neu gezeichnet wird. Jede Verzögerung oder Verkleinerung des Redrawing-Bereichs verringert die Belastung um ein Vielfaches.

In Ihrem Beispiel ist das Glas natürlich ziemlich abgestumpft, auch in der Tiefe. Es ist komisch, aber anscheinend muss das Rendering eines Stapels mit OpenCL zusätzlich auf allen Kernen durchgeführt werden, da die Berechnung in einzelne Zellen aufgeteilt wird, aber hier bin ich ein Theoretiker.

 
Aleksey Vyazmikin:

In Ihrem Beispiel ist der Becher natürlich ziemlich abgestumpft, einschließlich der Tiefe. Es ist komisch, aber anscheinend sollte die Zeichnung des Bechers auf allen Kernen mit OpenCL berechnet werden, zusätzlich, da die Berechnung in separate Zellen aufgeteilt ist, aber hier bin ich ein Theoretiker.

Ok, ich werde ein Becherglas mit mehr Zellen herstellen und erneut prüfen.

 
Реter Konow:

OK, ich mache ein Becherglas mit mehr Zellen und prüfe es noch einmal.

Machen Sie es einfach nicht statisch, sondern dynamisch.

 
Rafil Nurmukhametov:

Der Prozessor lädt gut, im vorherigen Bild sehen Sie eine offene Position, der Rahmen um den Preis ist magentafarben, dort ist die Position im Minus, im unteren Bild ist die Position im Plus

Meines Erachtens sollte ein solches Bild nicht länger als 1-3 Millisekunden aufgebaut sein. Wenn es länger dauert, muss es irgendwo einen Fehler geben.
 
Rafil Nurmukhametov:

Machen Sie es einfach nicht statisch, sondern dynamisch.

Was meinen Sie mit "dynamisch"? Damit nicht alle Zellen gleichzeitig ihre Werte ändern? Das verstehe ich nicht.

 
Nikolai Semko:
Meiner Meinung nach sollte ein solches Bild nicht länger als 1-3 Millisekunden entstehen. Wenn es länger dauert, ist irgendwo etwas nicht in Ordnung.

Jetzt haben Sie die Messlatte für Perfektion höher gelegt... Warum verringern Sie die Zeitspanne nicht auf 6-8 Millisekunden?

 
Реter Konow:

Was meinen Sie mit "dynamisch"? Damit nicht alle Zellen gleichzeitig ihre Werte ändern? Das verstehe ich nicht.

Damit sich der aktuelle Preis über die Zellen hinweg bewegt und nicht in der Mitte wie in mt5

 
Rafil Nurmukhametov:

damit sich der aktuelle Preis über die Zellen hinweg bewegt, nicht in der Mitte wie im mt5 Cup

Das heißt, ohne Zentralisierung. Nun, für Futures-Instrumente ist das genau das, was Sie brauchen. Gut. (Dies ist nur ein Mockup, um die Belastung zu testen).

 
Rafil Nurmukhametov:

Jetzt haben Sie die Messlatte für Perfektion höher gelegt... Können Sie den Wert auf 6-8 Millisekunden senken?

ist zu viel. Selbst 3 sind zu viel. 6-8 bei 30 fps entspricht 20-30 % der CPU-Zeit.
Sie müssen ArrayCopy so oft wie möglich verwenden, wenn möglich. Auch die Transparenz sollte nur dort, wo es nötig ist, auf ein Minimum beschränkt werden.
Sie können eine Profilerstellung durchführen und sehen, wo die maximale CPU-Leistung verloren geht.
Peter hat natürlich recht, man sollte lokal neu zeichnen, wo es Änderungen gab, aber nicht jedes Mal die gesamte Leinwand neu zeichnen.
Und die Verwendung von DX im Allgemeinen kann Ihre CPU sehr entlasten
 

OK, habe das Glas im Editor gemacht. Ich habe zwei Stunden gebraucht. Das ist eine Menge Aufregung. Sie können den Prozess um das Vierfache beschleunigen, indem Sie Werkzeuge hinzufügen.

Ich habe es getestet.

Das Ergebnis: weniger als 20 % der Auslastung bei konstanter Veränderung aller Zellen ask und bid und einer Zelle price, bei 40 Bildern pro Sekunde. (Die Belastung steigt um 5-7 Prozent, wenn die Aufzeichnung aktiviert ist).


Ich wiederhole meine Meinung - unter realen Bedingungen würde die Belastung je nach Marktaktivität 5 bis 10 Prozent betragen.

Dateien:
GUI_Expert.ex5  600 kb