Es stellt sich die Frage, wie sich das auswirkt - natürlich habe ich dem Code entnommen, dass sie das "if" tatsächlich entfernt haben. Ich möchte jedoch einen Kommentar dazu abgeben, denn es ist nicht klar, worin der Gewinn in Bezug auf eine schnellere Logik besteht.
Intuitive Lösung - großen Code in eine Funktion verschieben (noch besser wäre ein separates Include), if, increment und break abschaffen.
Ich bin auch sehr verwirrt, wenn es darum geht, die Werte der zu analysierenden Variablen zu erhalten. Im Testbeispiel handelt es sich um Zufallszahlen, aber in der Realität? Ich würde bereits reine boolesche Werte dort belassen, um zu prüfen, ob (bool_a > 10.0) anstelle von (double_a).
Die intuitive Lösung besteht darin, den umfangreichen Code in eine Funktion (oder besser noch in ein separates Inlude) zu packen und if, increment und break loszuwerden.
Tatsächlich ist es bereits eine Funktion, so dass es nicht klar ist, warum es einen solchen Leistungsgewinn gibt!
Ich verwende inlude in meinem Arbeitscode, aber es ist rein Code-Migration, wie schlagen Sie vor, es zu organisieren? Bray trägt erheblich zur Leistung bei - wie kann ich es loswerden, ohne an Geschwindigkeit zu verlieren?
Andrey Khatimlianskii:
Ich bin auch sehr verwirrt, wenn ich die Werte der analysierten Variablen erhalte. Im Testbeispiel sind es Zufallszahlen, aber in der Realität? Ich würde bereits reine boolesche Werte dort belassen, so dass ich (bool_a > 10.0) anstelle von (double_a) prüfen könnte.
In Wirklichkeit ist es dasselbe wie bei double - die Daten werden aus einer externen Datei entnommen, die bei der Initialisierung vollständig in den Puffer eingelesen wird. Ich habe also nicht genau verstanden, wie man aus ihnen ein bool macht.
Maxim Romanov: Der 3800x hat den i7 8700 in Bezug auf die Leistung beim Streaming fast eingeholt. Und es kam aus dem 2700.
Dies ist wahrscheinlich auf die geringere Speicherlatenz und den doppelt so großen Cache zurückzuführen.
Fazit: Für mt5 sind die Speicherzugriffslatenz und die Speicherlesegeschwindigkeit der entscheidende Faktor.
Dies zeigt sich auch an der geringen Leistung des 2990 wx Threads. Sie haben hohe Speicherlatenzen trotz der 4-Kanal- und speziellen Cache-Verarbeitung.
Die Geschwindigkeit der Kerne selbst ist also nicht so wichtig.
Vielleicht funktioniert es ja so.
und die 3800X soll sich nicht von der 2700 absetzen?
Dann gehe ich davon aus, dass während der Optimierung die Frequenz einfach durch die Ideologie sinkt. Führen Sie interessehalber einen längeren Durchlauf eines beliebigen EA durch - nicht 16 Durchläufe, sondern sagen wir 160 - ich frage mich, wie sich die Zeit des Durchlaufs ändert - der Unterschied sollte minimal sein - innerhalb von 1 Sekunde.
Bray trägt erheblich zur Leistung bei - wie kann ich es loswerden, ohne an Geschwindigkeit zu verlieren?
Ersetzen Sie ihn durch einen Return, wie in meinem Beispiel.
Aleksey Vyazmikin:
In Wirklichkeit ist es auch doppelt - die Daten werden aus einer externen Datei entnommen, die bei der Initialisierung vollständig in den Puffer eingelesen wird. Deshalb habe ich auch nicht verstanden, wie genau man es zu einem bool macht.
Anstelle von
int Povtor_High_M1 = X;
if ( Povtor_High_M1>=0 ) ***
if ( Povtor_High_M1< 0 ) ***
Machen Sie
bool Povtor_High_M1 = (X >= 0);
if ( Povtor_High_M1 ) ***
if ( !Povtor_High_M1 ) ***
Ersetzen Sie sie durch einen Rückkehrer, wie in meinem Beispiel.
Anstelle von
Machen Sie
Leider bin ich nicht schlau, aber X>=0 kann größer sein als jede andere Zahl - es gibt viele Kombinationen - man kann nicht alles im Code vorhersehen, und der Code wird durch die verschiedenen Kombinationen um viele Größenordnungen wachsen.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Es stellt sich die Frage, wie sich das auswirkt - natürlich habe ich dem Code entnommen, dass sie das "if" tatsächlich entfernt haben. Ich möchte jedoch einen Kommentar dazu abgeben, denn es ist nicht klar, worin der Gewinn in Bezug auf eine schnellere Logik besteht.
Intuitive Lösung - großen Code in eine Funktion verschieben (noch besser wäre ein separates Include), if, increment und break abschaffen.
Ich bin auch sehr verwirrt, wenn es darum geht, die Werte der zu analysierenden Variablen zu erhalten. Im Testbeispiel handelt es sich um Zufallszahlen, aber in der Realität? Ich würde bereits reine boolesche Werte dort belassen, um zu prüfen, ob (bool_a > 10.0) anstelle von (double_a).
Neuer Build, neuer Tester, neuer Compiler... In der Übersichtstabelle fehlt die Spalte "build mt5".
Bislang ist das Ergebnis stabil - ich habe es gestern überprüft, erwarten Sie also keine Leistungssprünge von Build zu Build.
Die intuitive Lösung besteht darin, den umfangreichen Code in eine Funktion (oder besser noch in ein separates Inlude) zu packen und if, increment und break loszuwerden.
Tatsächlich ist es bereits eine Funktion, so dass es nicht klar ist, warum es einen solchen Leistungsgewinn gibt!
Ich verwende inlude in meinem Arbeitscode, aber es ist rein Code-Migration, wie schlagen Sie vor, es zu organisieren? Bray trägt erheblich zur Leistung bei - wie kann ich es loswerden, ohne an Geschwindigkeit zu verlieren?
Ich bin auch sehr verwirrt, wenn ich die Werte der analysierten Variablen erhalte. Im Testbeispiel sind es Zufallszahlen, aber in der Realität? Ich würde bereits reine boolesche Werte dort belassen, so dass ich (bool_a > 10.0) anstelle von (double_a) prüfen könnte.
In Wirklichkeit ist es dasselbe wie bei double - die Daten werden aus einer externen Datei entnommen, die bei der Initialisierung vollständig in den Puffer eingelesen wird. Ich habe also nicht genau verstanden, wie man aus ihnen ein bool macht.
Der 3800x hat den i7 8700 in Bezug auf die Leistung beim Streaming fast eingeholt. Und es kam aus dem 2700.
und die 3800X soll sich nicht von der 2700 absetzen?
Dann gehe ich davon aus, dass während der Optimierung die Frequenz einfach durch die Ideologie sinkt. Führen Sie interessehalber einen längeren Durchlauf eines beliebigen EA durch - nicht 16 Durchläufe, sondern sagen wir 160 - ich frage mich, wie sich die Zeit des Durchlaufs ändert - der Unterschied sollte minimal sein - innerhalb von 1 Sekunde.
F
PS Vielleicht haben Sie einen Test, der RAM lädt?
F
PS Vielleicht haben Sie einen Test, der RAM lädt?
Danke, der Durchschnitt war ungefähr derselbe wie bei den 16 Durchläufen - wir nehmen an, dass das die richtigen Daten sind.
Für das Gedächtnis gibt es leider nichts Geeignetes im öffentlichen Bereich.
Hätte sich die 3800X nicht von der 2700 absetzen müssen?
Das hätte ich tun sollen, ich habe die Gründe vermutet, damit ich in Zukunft bei der Wahl des Bügeleisens etwas in der Hand habe.
Verstanden, danke.
Bray trägt erheblich zur Leistung bei - wie kann ich es loswerden, ohne an Geschwindigkeit zu verlieren?
Ersetzen Sie ihn durch einen Return, wie in meinem Beispiel.
In Wirklichkeit ist es auch doppelt - die Daten werden aus einer externen Datei entnommen, die bei der Initialisierung vollständig in den Puffer eingelesen wird. Deshalb habe ich auch nicht verstanden, wie genau man es zu einem bool macht.
Anstelle von
Machen Sie
Ersetzen Sie sie durch einen Rückkehrer, wie in meinem Beispiel.
Anstelle von
Machen Sie
Leider bin ich nicht schlau, aber X>=0 kann größer sein als jede andere Zahl - es gibt viele Kombinationen - man kann nicht alles im Code vorhersehen, und der Code wird durch die verschiedenen Kombinationen um viele Größenordnungen wachsen.