Ermitteln der Anzahl der Dezimalstellen beliebiger Zahlen (nicht nur Anführungszeichen) unter Umgehung von Digits() in MQL4 und MQL5 - Seite 15
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
wenn ArrayCopy() auf die gleiche Weise wie Cysh memmove() ausgeführt wird,
Ich denke, die Geschwindigkeit von ArrayCopy() hängt von der Geschwindigkeit der Speicherzuweisung ab, wenn der Zwischenpufferspeicher zum Kopieren bereit ist, wird ArrayCopy() sehr schnell ausgeführt, wenn der Speicher nicht zugewiesen ist, werden Sie Anfragen an das Betriebssystem starten, um Speicher zuzuweisen
Sie können versuchen, es zu testen - machen Sie einen Aufruf von ArrayCopy() mit einer großen Datenmenge, wodurch der Pufferspeicher für das Swapping vorbereitet wird, und machen Sie dann eine Schleife mit ArrayCopy() mit einer kleineren zu kopierenden Datenmenge und messen Sie dann die Geschwindigkeit
In unserem aktuellen Beispiel wird das Kopieren in ein statisches Array ausgeführt, aber im Allgemeinen ist es natürlich interessant, wenn ArrayCopy langsamer ist als ein einfaches for. Wenn Sie Speicher zuweisen müssen, müssen Sie es sowieso tun, egal wie Sie es tun.
In unserem aktuellen Beispiel wird in ein statisches Array kopiert, aber im Allgemeinen ist es natürlich interessant, wenn ArrayCopy langsamer ist als simple for. Wenn wir Speicher zuweisen müssen, müssen wir das sowieso tun.
Es spielt keine Rolle, ob statisch oder dynamisch, wir wissen nicht, wie ArrayCopy() implementiert ist, ich habe nur angenommen, dass es ein "Wrapper" über Standard-Cish-Funktionen ist, memmove() funktioniert normalerweise über zusätzliche Puffer... nun, wie üblich, so wurde es vorher geschrieben, es ist schwer zu sagen, wie und welcher Compiler arbeitet
SZY: Ich weiß einfach nicht, wie man die Laufzeit in MQL testet ((( - ich habe es ein paar Mal versucht, ich glaube, ich habe Beispiele aus der Hilfe genommen, die Ergebnisse sind irgendwie sehr unterschiedlich, und ich habe diese Frage aus der Notwendigkeit heraus ignoriert - ich teste die Leistung nicht, ich schaue normalerweise im Profiler, was und wie in der Zeit ausgeführt wird
Ich weiß nur nicht, wie man die Ausführungsgeschwindigkeit in MQL ((( - Ich habe es ein paar Mal versucht, ich glaube, ich habe Beispiele aus der Hilfe, aber die Ergebnisse waren sehr unterschiedlich aus irgendeinem Grund, und ich gab auf dieses Problem, weil ich nicht die Leistung testen, ich in der Regel den Profiler verwenden , um zu sehen, wie und was in der Zeit ausgeführt wird
Hier ist der einfachste Weg, den ich oben verwendet habe
Hier ist die einfachste Methode, die ich oben verwendet habe
Danke, ich hab's, ich werde es morgen testen
Ja, dies wird viel schneller funktionieren (wo möglich ersetzt durch ArrayCopy, der Rest ist derselbe):
Wie gesagt, ich habe das Erste geschrieben, was mir in den Sinn kam, ohne irgendwelche Tests))
Diese Variante unterscheidet sich nicht von meiner. Die Messungen (Mindestzeit von 10 Versuchen) beweisen es.
Sie können sehen, dass die Variante mit Zyklus schneller ist, weil der Zyklus 60 /4 = 15 Elemente umfasst.
Diese Variante unterscheidet sich nicht von meiner.
Offenbar ja, nur der Strukturtyp und der Arraytyp sind willkürlich.
Sie sehen, dass die Schleifenvariante schneller ist, weil die Schleife aus 60 /4 = 15 Elementen besteht.
Seltsamerweise bekam ich schneller als ArrayCopy mit den gleichen MqlTicks und int...
Seltsamerweise bekam ich schneller als ArrayCopy mit den gleichen MqlTicks und int...
Ich führe es in MT5x64 aus.
Offensichtlich ja, aber der Strukturtyp und der Arraytyp sind willkürlich.
Ich habe absichtlich den Normalfall vermieden, um mehr Menschen die Teilnahme zu ermöglichen.
Bislang
Läuft in MT5x64.
Der allgemeine Fall wurde absichtlich umgangen, damit mehr Personen teilnehmen konnten.
Bis jetzt.
Ich schätze, Ihr Code ist bereits schneller :)
Ich muss dort eine Menge Service Code hinzufügen, um die Funktionalität von ArrayCopy zu verbessern (source start, dest start, count) und die Parameter auf Korrektheit zu überprüfen...
Im Allgemeinen haben Sie so viele tolle Werke/Bibliotheken, dass es seltsam ist, dass Sie im Forum nach der besten Lösung fragen und diskutieren :)
Es ist seltsam, dass Sie im Forum nach der besten Lösung fragen und diskutieren :)
Ich brauche eine für die HistoryTicks-Bibliothek. Vielen Dank für Ihre Teilnahme.