Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 53
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
Das Ergebnis
250 Mal schneller, und das ist noch nicht alles!
HH Die rot markierte Tatsache kann in keiner Weise erklärt werden.
Wie man schnell viele Strings zusammenzählt (z.B. einen Handelsbericht in einem String erstellen)
Das Ergebnis
250 Mal schneller, und das ist noch nicht alles!
ZS Rot markiert eine Tatsache, die sich nicht erklären lässt.
Die Besonderheit des Speicherpools ist, dass beim ersten Aufruf von SumString2 der Speicherpool mit Speicher aus dem System "gesättigt" ist, beim zweiten Aufruf wird der Speicher nicht mehr aus dem System angefordert.
Ich empfehle die Korrektur von SumString1
Beim ersten Aufruf von SumString2 in den Speicherpool wird dieser mit Speicher aus dem System "gesättigt", beim zweiten Aufruf wird der Speicher nicht mehr vom System angefordert.
Ich empfehle die Korrektur von SumString1
Ich danke Ihnen! Könnten Sie bitte den Begriff des Empfangspuffers wenigstens irgendwie in der Hilfe wiedergeben. Im Moment gibt es nurStringBufferLen, dessen Beschreibung nichts aussagt.
Ich danke Ihnen! Könnten Sie bitte das Konzept des Empfangspuffers zumindest in der Hilfe erklären. Momentan gibt es nur StringBufferLen, dessen Beschreibung keinen Sinn ergibt.
Es ist ganz klar, dass es sich um Speicher handelt, der für die Zeichenketten zugewiesen wird. Es ist nur so, dass Elijahs Erklärung der "Speichersättigung des Systems" irgendwie verwirrend ist. )
Übrigens wusste ich auch nicht, dass eine lokale Variable zuvor zugewiesenen Speicher verwendet. Es macht also wenig Sinn, eine eigene Optimierung vorzunehmen, es sei denn, es handelt sich um eine einzelne schwere Berechnung. Auch die Frage der Freigabe dieses Speichers ist nicht klar. Wird sie während der Laufzeit oder nur bei der Deinitialisierung freigegeben?
Es ist klar, dass wir über den zugewiesenen Speicher für String sprechen. Es ist nur so, dass Ilya es auf eine sehr komplizierte Art und Weise über "Speichersättigung des Systems" erklärt. )
Natürlich ist es verständlich, wenn Ilja den Kodex zitiert. Leider verliert er in der Hilfe kein einziges Wort darüber.
Übrigens war mir auch diese Besonderheit nicht bekannt: eine lokale Variable verwendet früher zugewiesenen Speicher. Es macht also wenig Sinn, eine eigene Optimierung zu erstellen, es sei denn, es handelt sich um eine einzelne schwere Berechnung.
Ich hatte gerade einen solchen Fall, als ich Sekunden brauchte, um eine Zeichenkette zu bilden. Aber nach der Optimierung brauchte ich nur noch Millisekunden. Aber die Variante von Ilya ist natürlich die schnellste. Wenn meine Hilfe perfekt wäre, hätte ich sie nicht so gemacht.
Natürlich ist es verständlich, wenn Ilja den Code gegeben hat. Leider findet sich in der Hilfe kein Hinweis darauf.
Ich bin gerade auf einen solchen Fall gestoßen, bei dem es Sekunden dauerte, eine Zeichenkette zu bilden. Aber nach der Optimierung war es in Millisekunden erledigt. Aber die Variante von Ilya ist natürlich die schnellste. Wenn unsere Hilfe ideal wäre, hätte ich sie nicht so gemacht.
Nun, was StringInit betrifft, so ist es schon lange bekannt. Ich verwende es auch immer für große Mengen. Wenn ich die genaue Länge der hinzuzufügenden Zeilen nicht kenne, verwende ich die ungefähre Länge.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: TesterBenchmark
fxsaber, 2017.08.15 19:31
ZS2 Was hat es mit den Bremsen im Jahr 1648 beim ersten Durchgang jeder Partie auf sich? Im Jahr 1643 war es so.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Merkmale der Sprache mql5, Feinheiten und Tricks
fxsaber, 2017.08.15 17:16
Beim ersten Durchlauf eines Agentenauftragsbündels (z. B. einem einzelnen Testerlauf) kann die Zeit zwischen der Ausführung des EA und dem ersten NewTick-Ereignis einige Sekunden betragen. Bei den folgenden Durchläufen der Charge ist diese Zeit gleich Null.
Im Testgerät gibt IsStopped() immer Null(nicht false) zurück. Daher ist es falsch zu erwarten, dass dieses Flag mit ExpertRemove() wie in der realen Welt des Testers interagiert.
Die erste Zeile läuft schneller als die zweite mit identischen Ergebnissen.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: TesterBenchmark
fxsaber, 2017.09.05 09:36
Dummerweise erhöht das Ersetzen von PositionSelect durch PositionGetTicket die Backtest-Geschwindigkeit um 7%!