Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 118
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Übrigens, was die Null betrifft, so prüft FastLog2 nicht auf Null, was ihm einen Vorsprung verschafft. Aber es ist immer noch 1,5-2 mal langsamer als log2, wenn es richtig getestet wurde).
Und was ist daran falsch?
Denn auch Ihre Version des Tests ergibt:
Übrigens, was die Null betrifft, so prüft FastLog2 nicht auf Null, was ihm einen Vorsprung verschafft. Aber es ist immer noch 1,5-2 mal langsamer als log2, wenn richtig getestet).
Natürlich sollten wir die Nullprüfung aus log2 entfernen oder die gleiche Prüfung in FastLog2 einbauen.
Die Frage ist eigentlich die nach der Geschwindigkeit des rechnerischen Teils. In log2 wird alles nur durch Verschiebungen und Additionen berechnet. FastLog2 verwendet Tabellenwerte nach geschickten Umrechnungen mit Multiplikation. Dieser Code ist sehr alt, er wurde in den Tagen der Mathe-Coprozessoren verwendet, die Situation kann sich seitdem durchaus geändert haben.
Dies ist das Standardverhalten von MQL5: statische Variablen kommen nach globalen Variablen.
Dadurch kann man sehr ernsthaft in Schwierigkeiten geraten.Dies ist das Standardverhalten von MQL5: statische Variablen beginnen nach den globalen Variablen.
Ist das der Grund, warum jede statische Variable einer Klasse/Struktur nach der Struktur selbst deklariert werden muss? Und auch ohne ihm einen Wert beizumessen... Vielleicht sollten wir vorschlagen, dass der Compiler all dies automatisch erledigt?
Dabei handelt es sich im Wesentlichen um einen Fehler, eine falsche Reihenfolge der Programmcodeausführung. Der Compiler sollte dies prinzipiell nicht zulassen. Sie sollten die Entwickler deswegen öfter anschreien.
In C++ wird der Code vom Compiler strikt von oben nach unten abgearbeitet, d. h. alles, was oben steht, ist bereits initialisiert, und Sie können nicht auf den Code darunter zugreifen. Und da die Entwickler hier ihre eigenen Regeln eingeführt haben, sollen sie auch für die richtige Reihenfolge der Codeausführung sorgen.
In C++ wird der Code vom Compiler strikt von oben nach unten abgearbeitet, d. h. alles, was oben steht, ist bereits initialisiert, und man kann nicht auf das untere zugreifen. Deshalb ist alles klar.
Es gibt weniger Flexibilität.