Leinwand ist cool! - Seite 66

 
Für einige Aufgaben, wie z. B. die Skalierung der Oberfläche, kann die Funktion zur Größenänderung des Bildes stark vereinfacht werden.
Ein Beispiel für eine Funktion zum Laden einer Ressource mit einer bestimmten Größe.

bool  ImageFromResource(const string _resource,const int _w,const int _h,uint &_pic[])
{
   uint lp[];
   int wr, hr;
   if(_w<2 || _h<2) return(false);
   if(!ResourceReadImage(_resource,lp,wr,hr))
   {
      Print("Еrror loading resource: ",_resource);
      return(false);
   }
   if(_w!=wr || _h!=hr)
   {
      //resize image
      ArrayResize(_pic,_w*_h);
      double sw=(double)_w/wr;
      double sh=(double)_h/hr;
      //
      for(int _y=0; _y<_h; _y++)
         for(int _x=0; _x<_w; _x++)
            _pic[_y*_w+_x]=lp[int(_y/sh)*wr+int(_x/sw)];
   }else ArrayCopy(_pic,lp);
   return(true);
}

Visueller Vergleich der Algorithmen zur Größenanpassung, mit vereinfachter Version auf der rechten Seite.


 
fxsaber:

Die triviale Minimierung solcher Terminals reduziert die große CPU-Belastung fast auf Null. Es ist unklar, warum eine solch irrationale, CPU-belastende GUI benötigt wird.

Das ist den Programmierern zu verdanken,

Der beliebteste Videocodec madvr wird zum Beispiel angehalten und frisst, als ob er Mining betreiben würde)

 
fxsaber:

Ja. Ich glaube nicht, dass die Entwickler jemals fünf Terminals parallel laufen lassen, wo Market Watch mit hoher Frequenz jeweils Hunderte von Zeichen hat.

Es kommt sehr albern rüber, wenn eine triviale Minimierung solcher Terminals eine große CPU-Last auf fast nichts reduziert. Es ist unklar, warum eine solch irrationale, CPU-belastende GUI notwendig ist.

Und Sie glauben, dass das Rendering der GUI 300 Mal pro Sekunde kostenlos ist?

Sie werden der Erste sein, der behauptet, dass wir falsch zeichnen, nicht zu Ende zeichnen oder das Zeichnen auslassen.

Wenn es sich um einen Desktop handelt, brauchen Sie eine normal schnelle Grafikkarte - sie wird die hohe Rendering-Rate verschlingen. Das Minimieren von Fenstern kann die Belastung der meisten Anwendungen, die häufig geladen werden, verringern.


Zur Information, MetaTrader kann 100-300 FPS aufgrund des großen Flusses von Notierungen pro Sekunde. Nicht 1-2 Bilder pro Sekunde wie bei regulären Programmen, sondern tatsächlich Hunderte von Bildern pro Sekunde, je nach Zitatstrom.

 
Renat Fatkhullin:

Glauben Sie, dass das Zeichnen der Benutzeroberfläche 300 Mal pro Sekunde kostenlos ist?

Sie werden der Erste sein, der behauptet, dass wir falsch zeichnen, nicht zu Ende zeichnen oder das Zeichnen auslassen.

Wenn es sich um einen Desktop handelt, brauchen Sie eine normal schnelle Grafikkarte - sie wird die hohe Rendering-Rate verschlingen. Das Minimieren von Fenstern kann die Belastung der meisten Anwendungen, die häufig geladen werden, verringern.


Zur Information, MetaTrader kann 100-300 FPS aufgrund des großen Flusses von Notierungen pro Sekunde. Nicht 1-2 Bilder pro Sekunde wie bei normalen Programmen, sondern tatsächlich Hunderte von Bildern pro Sekunde, je nach dem, was der Stream bietet.

Renat Sie haben alle neuen Prozessoren getestet, die jetzt auf dem Niveau von 10 Intel-Prozessen und zen2 schneller pro Kern sind, die wir hier laufen haben, richtig?

Soweit ich weiß, ist Intel nicht gut im Multithreading, Amd parallelisiert Multithreading gut, es ist eine gute Idee
 

Leinwand - Cool!

Wie hilft es beim Handel?

 
Renat, wenn Sie schon mal hier sind, schreiben Sie bitte zurück
 
prostotrader:

Leinwand - Cool!

Hilft es beim Handel?

Ja

 
Yury Kulikov:
Für einige Aufgaben, wie z. B. die Skalierung der Oberfläche, kann die Funktion zur Größenänderung des Bildes stark vereinfacht werden.
Ein Beispiel für eine Funktion zum Laden einer Ressource mit einer bestimmten Größe.

Visueller Vergleich der Algorithmen zur Größenanpassung, mit vereinfachter Version auf der rechten Seite.

Nun ja, Juri, ich stimme zu. Ein solcher superschneller Algorithmus hat ein Recht auf Leben.
Aber er hat natürlich einen gravierenden Qualitätsverlust. Besonders in Bildern, wo es scharfe Farbübergänge gibt.
Hier ist zum Beispiel ein Skript, das dies deutlich zeigt. Auf der rechten Seite dieser schnelle Algorithmus, und auf der linken Seite meiner (etwa 4-10 mal langsamer).
Ein Beispiel für eine normale Verkleinerung eines Screenshots:


Übrigens habe ich verstanden, warum es diese Blinkzeichen gab. Ich habe die Größe der Bitmap bei jedem Frame geändert, was dumm war und der Grund dafür. Jetzt habe ich es entfernt und alles läuft reibungslos.

Dateien:
Scaling.gif  12254 kb
scaling2.zip  290 kb
 
Fast235:

Renat Sie haben alle neuen Prozessoren getestet, die jetzt auf dem Niveau von 10 Intel-Prozessen und zen2 schneller pro Kern sind, die wir hier laufen haben, nicht wahr?

Soweit ich weiß, ist Intel nicht gut im Multithreading, AMD parallelisiert Multithreading gut, es ist eine gute Lösung

Alle modernen Prozessoren sind schnell genug.

Vor allem, wenn Sie über ausreichend Speicher und NVMe-Laufwerke für Terminalaufgaben verfügen. Eine Mittelklasse-Grafikkarte wird dringend empfohlen.

In unserem Unternehmen verzichten wir auf Intel und kaufen seit mehr als einem Jahr nur noch AMD Epyc für Server und Workstations.

 
Renat Fatkhullin:

Alle modernen Prozessoren sind recht schnell. Vor allem, wenn viel Arbeitsspeicher und NVMe-Festplatten vorhanden sind.

Für das Terminal ist eine Mittelklasse-Grafikkarte sehr empfehlenswert.

In unserem Unternehmen lehnen wir Intel ab und kaufen seit mehr als einem Jahr nur noch AMD Epyc für Server und Workstations.

großartig)