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
Geben Sie mir den vollständigen Code Ihres Tests
Bitte sehr, aber ich sehe keinen Sinn darin, rand() noch einmal zu diskutieren, alternativ kann man es durch eine inc++ Variable ersetzen
Ja... Ich habe einen Fehler in meinem Code, ich will die Zeit in Sekunden ausgeben, aber ich bekomme 10 mal mehr, ich habe es richtig durch 1 000 000 geteilt, wer kann mir sagen, was der Grund ist?
Bitte sehr, aber ich sehe keinen Sinn darin, rand() noch einmal zu diskutieren, alternativ kann man es durch eine inc++ Variable ersetzen
Ja... Irgendein Fehler in meinem Code, ich will die Zeit in Sekunden ausgeben, aber ich bekomme 10 mal mehr, ich habe es richtig durch 1 000 000 geteilt, wer kann mir sagen, was der Grund ist?
BOMBE.
Hier ist Ihr Code, der beweist, dass es andersherum ist.
BOMBE
Hier ist Ihr Code, der das Gegenteil beweist.
Ich habe die Schecks einfach umgedreht.
Ich habe gerade die Schecks ausgetauscht
2020.11.02 21:01:38.590 22222 (USDCHF,H1) cnt: Schleifen = 1000 Sekunden=821.7159
2020.11.02 21:01:52.353 22222 (USDCHF,H1) ArraySize: Schleifen = 1000 Sekunden=807.9415
Welcher Test? ))
Sie selbst haben beide Varianten der Zyklusbedingung gezeigt.
Igor hat den obigen Code ebenfalls angegeben.
Messen Sie einfach die Leistung der Schleife mit variabler Größe und mit ArraySize() in der Schleifenbedingung.
Beweisen Sie mir das Gegenteil)
denn in meinem Test sind sie identisch
Ich habe die Schecks einfach umgedreht.
Ja, das müssen Sie tun.
Diesmal war ich zu faul.
Ich habe die Tests in eine externe Schleife verpackt und sie so erhalten:
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=13.4910
Ja, es muss getan werden.
Diesmal war ich zu faul.
Ich habe die Tests in eine externe Schleife eingeschlossen und erhalte Folgendes
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: Schleifen = 1000 Sekunden=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: Schleifen = 1000 Sekunden=13.4910
Tauschen Sie sie jetzt in der Schleife aus und lassen Sie sich überraschen
Tauschen Sie sie nun in der Schleife aus und Sie werden überrascht sein
Das wird mich nicht überraschen, denn ich weiß, dass der Compiler den Code im laufenden Betrieb optimieren kann.
aber imho sollte man in verschachtelten Schleifen trotzdem nicht unnötig ArraySize() aufrufen.
Natürlich kann das manchmal unbequem sein, deshalb mache ich die Schleife über eine temporäre Variable - Ihre Version № 2
imho ist es zuverlässig und Sie verstehen, was passieren wird
Nun, ich kann IMHO nichts dagegen sagen.
Bei sehr großen Wiederholungen sind meine Siege bei der ersten und zweiten Methode zufällig geworden... Höchstwahrscheinlich hängt dies vom aktuellen CPU-Cache und der Gesamtlast ab.
Meine Frage bezog sich nicht auf die Schleife, sondern darauf, wie sich die Funktion entfaltet. Nur als ein Beispiel wurde ArraySize
Das Ergebnis;
for (int i=0; i<ArraySIze(mas); i++) == for (int i=0; i<size; i++)
Fügen wir jedoch die Initialisierung der Variablen size zum zweiten Teil hinzu, dann übernimmt die erste Methode die Führung für die Zeit der Initialisierung dieser Variablen und ihrer Gleichsetzung mit dem Wert.
Wenn Sie die Größe von Arrays im Hauptteil der Schleife ändern, funktioniert die fliegende Optimierung nicht
Ändern Sie also den Code:
dann hat die erste Methode Vorrang, denn die Zeit, in der diese Variable initialisiert und mit einem Wert gleichgesetzt wird, macht sich nur bei hohen Wiederholungen bemerkbar
es funktioniert nicht
Laufzeit-Optimierung wird an der Spitze stehen
Sie können solche einfachen Mashidas nicht ohne den Profiler testen, im Allgemeinen können Sie in einer Schleife schreiben, oder Sie können im Tester testen, Geschwindigkeit ist dafür wichtig