Fehler, Irrtümer, Fragen - Seite 2878
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
welche Konvertierungsvariante bei der Optimierung schneller funktionieren wird
Diese Funktion wird nur einmal pro Durchgang aufgerufen. Es macht also keinen Unterschied.
Diese Funktion wird nur einmal für die gesamte Passage aufgerufen. Es macht also keinen Unterschied.
also ja... Aber ich werde es für ein paar Tage für die Optimierung laufen, ich möchte die Leistung in irgendeiner Weise ..... messen, obwohl ich vermute, dass Variante 1 effizienter sein wird, wird es nicht 100500 mal das Kopieren in Arrays sein
ja... Aber ich werde den Computer für ein paar Tage laufen lassen, um es zu optimieren, ich möchte die Leistung in irgendeiner Weise ..... messen, obwohl ich vermute, dass Option 1 effizienter sein wird, wird es nicht 100500 Mal das Kopieren in Arrays sein
Union ist nicht das Kopieren in Arrays, es ist unterschiedliche Interpretation des gleichen Speicherplatzes. so die 2. Option ist wahrscheinlich schneller, aber wie oben erwähnt, es spielt keine Rolle.
ja... Aber ich werde den Computer für ein paar Tage laufen lassen, um es zu optimieren, ich möchte die Leistung in irgendeiner Weise ..... messen, obwohl ich vermute, dass Option 1 effizienter sein wird, wird es nicht 100500 Mal das Kopieren in Arrays sein
Es gibt eine alte Methode, die Geschwindigkeit zu messen.
in Anlehnung an
for (int i=0; i< 1000000; i++) {unser Code1}....
for (int i=0; i< 1000000; i++) {unser Code2}....
Union ist nicht so schnell, wie es klingt. Ich setze auf den ersten.
Binäre Operatoren sind um ein Vielfaches schneller als der if-Operator, auch wenn der zweite Operator ihn nicht hat.
überprüft:
2020.10.15 21:48:01.401 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000000 ms=10864370
2020.10.15 21:48:12.264 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000000 ms=10862287
der Unterschied nicht signifikant ist, ist es sehr wahrscheinlich, dass die Ergebnisse umgekehrt ausfallen, wenn man die Tests in umgekehrter Reihenfolge durchführt
nicht kritisch
kein signifikanter Unterschied besteht, ist es sehr wahrscheinlich, dass die Ergebnisse umgekehrt ausfallen, wenn Sie die Tests vertauschen
Es ist sehr wahrscheinlich, dass der Compiler für beide Fälle den gleichen Code erzeugt hat. In diesem Fall wählen Sie einfach den, der Ihnen subjektiv besser gefällt
überprüft:
2020.10.15 21:48:01.401 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000000 ms=10864370
2020.10.15 21:48:12.264 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000000 ms=10862287
der Unterschied nicht signifikant ist, ist es sehr wahrscheinlich, dass die Ergebnisse umgekehrt ausfallen, wenn man die Tests in umgekehrter Reihenfolge durchführt
nicht kritisch
Das Skript hier zeigt, dass die Zeit für die Erstellung von Zufallszahlen ungleichmäßig sein kann und von der Größe der erstellten Variablen abhängt)))
Und für den Code, den wir für diese Anzahl von Wiederholungen benötigen, brauche ich 0 ms.
Immer noch keine Antwort.
oder der Code-Optimierer schneidet etwas Unnötiges herausEs scheint ein Skript zu geben, das zeigt, dass das Timing der Zufallszahlengenerierung ungleich sein kann
nein rand() ist eine normale Funktion, sie funktioniert immer gleich
Aber beim Testen der Geschwindigkeit, wenn Sie es mit Konstanten initialisieren, werden die Tests während der Ausführung "beschleunigen" - Code-Optimierung in MQL während der Laufzeit ist gut
im Allgemeinen wurde sie mehrmals überprüft
und es hängt viel von der Größe der erstellten Variablen ab)))
Natürlich ist die Zuweisung von Speicher zeitaufwendig, ich habe es überprüft, ich teste sowohl dynamisch erstellte Objekte (neue Zeiger) und nur Objekte im lokalen Bereich, der Test erstreckt sich 100500 Mal pro neue + löschen
die ganze Frage war, weil in der Tester im globalen Bereich Speicher zu Variablen einmal und nicht jeder Durchlauf zugeordnet ist - aber ich brauche uint Arrays, so dass ich mit diesem Skript getestet, nicht wie ich es das erste Mal geschrieben
Und der Code, den wir für diese Anzahl von Wiederholungen benötigen, dauert 0 ms
immer noch keine Antwort
Entweder kürzt der Code-Optimierer etwas Unnötiges.Haben Sie mein Skript verwendet? - entweder haben Sie nicht bis zum Ende des Tests gewartet und unterbrochen oder Sie haben ulong überlaufen lassen - der erste Makroparameter ist 10^ count
Es ist sehr wahrscheinlich, dass der Compiler für beide Fälle den gleichen Code erzeugt hat. In diesem Fall wählen Sie einfach den, der Ihnen subjektiv am besten gefällt.
ja, vielleicht schon
das ist, was ich gefragt habe - ich habe oft gelesen, dass moderne Prozessoren mehr als eine elementare Operation pro Takt ausführen können, indem sie die Befehlspipeline optimieren .... viel Bla-bla-bla... und der Punkt ist, dass die arithmetischen Anweisungen vom Prozessor in einer unvorhersehbaren Anzahl von Taktzyklen ausgeführt werden
Was die Verzweigungen und Speicherzuweisungen betrifft, so werden sie vom Prozessor sehr schlecht optimiert, also suchen Sie nicht nach Optimierungen bei der Vereinfachung der Arithmetik, sondern versuchen Sie, möglichst linearen Code mit minimalen Verzweigungen zu schreiben, und Variablen sollten besser deklariert und Werte direkt vor den Berechnungen zugewiesen werden, damit die Befehlspipeline und die Cache-Sampling-Vorhersage diesen Code optimieren können
D.h. die Abtastung der Werte von Elementen im Array (Adressierung) ist höchstwahrscheinlich nicht entscheidend für die Geschwindigkeit - ich dachte, es gäbe einen Verschiebungsvorteil gegenüber Union, es stellt sich heraus, dass es überhaupt keinen Unterschied gibt