Ein wenig überrascht :) Ich dachte, ich teile das und stelle eine NICHT rhetorische Frage. - Seite 24

 
TheXpert:
Es wäre perfekt, es an der EMA zu testen.

Ich glaube, das ist nicht mehr nötig. Die Situation ist klarer geworden. Wie es in diesem Thread üblich ist - ich bin ein wenig überrascht und dachte, ich teile es... :)

Hier ist ein Auszug aus dem Test, der vollständige Test ist im Trailer zu finden, die Bibliothek ist ebenfalls dort enthalten:

..........
....................
    IntRational ira={2345,3456};
    IntRational irb={67,93};
    IntRational irc={93,67};
    t = GetTickCount();
    for(int i=0;i<Count;i++)
      {
       ira.Div(irb); ira.Div(irc);
       ira.Mul(irb); ira.Mul(irc);
       ira.Add(irb); ira.Add(irc);
       ira.Sub(irb); ira.Sub(irc);
       ira.Norm();
      }
    Print("Common time IntRational test = ", GetTickCount()-t, " ms; // ",Count," calls");
    double da=2345.0/3456.0;
    double db=67.0/93.0;
    double dc=93.0/67.0;
    t = GetTickCount();
     for(int i=0;i<Count;i++)
      {
       da/=db; da/=dc;
       da*=db; da*=dc;
       da+=db; da+=dc;
       da-=db; da-=dc;
      }
    Print("Common time double test = ", GetTickCount()-t, " ms; // ",Count," calls");
..................
......

Ergebnisse:

2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Allgemeine Zeit int test = 62 ms; // 1000000 Aufrufe
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Gemeinsame Zeit long test = 141 ms; // 1000000 Aufrufe
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Gemeinsame Zeit double test = 62 ms; // 1000000 Aufrufe
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Gemeinsame Zeit IntRational test = 1032 ms; // 1000000 Aufrufe
2011.04.04 20:29:14 RationalSpeedTest (EURUSD,M20) Allgemeine Zeit LongRational test = 921 ms; // 1000000 Aufrufe

Ich war sehr verblüfft: double und int waren in der Geschwindigkeit der Rechenoperationen absolut gleichauf, und außerdem war long am schnellsten, Rational war komplett im Eimer.

Im Lichte dieser Experimente zögere ich ein wenig, einen Integer-Tester zu bauen. :-))

Vielleicht sind die Ergebnisse mit anderen Prozessoren etwas anders (ich bin denjenigen dankbar, die das testen und posten), aber ich kann nicht an große Unterschiede glauben.

Interessanterweise habe ich in den unvergessenen 90er Jahren einmal den Unterschied zwischen Ganzzahl- und Fließkommaoperationen getestet, und die Unterschiede waren (gelinde ausgedrückt) ziemlich deutlich.

Zusammenfassung - Die 90er Jahre sind vorbei, Fließkommaarithmetik funktioniert heute sehr schnell.

Selbst die Umstellung auf Ganzzahlarithmetik ist (im Handelskontext) nicht sinnvoll - der Gewinn ist vernachlässigbar, wenn nicht gar illusorisch.

Abschließendes Resümee - wenn Intel nicht dringend Unterstützung für rationale Arithmetik auf Iron-Level macht, müssen Sie sich keine Sorgen mehr machen... zumindest was die Leistung betrifft. :)

Amen.

// Ich wiederhole. Die Tests wurden auf einem einzigen Murmeltier-PC durchgeführt. Um keine Illusionen aufkommen zu lassen, möchte ich daher alle bitten, den Test auf ihren Computern durchzuführen und die Ergebnisse mit Angabe der Eisenparameter zu posten.

// Mein Computer: 2 Gigabyte RAM, Sempron 3100+ 2,2-Gigahertz-CPU, 32 Bit, WinXP-Betriebssystem

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
Dateien:
 
MetaDriver:

Ich glaube, das ist nicht mehr nötig. Die Situation ist klarer geworden. Wie es in diesem Thread üblich ist - ich bin ein wenig überrascht und dachte, ich teile es... :)



Für 99 % der Abzüge ist kein gemeinsamer Nenner erforderlich, so dass die Prüfung nicht ganz korrekt ist. Man muss die richtigen Berechnungen anstellen und sie richtig durchführen. Inty nach meinen Schätzungen ist 1000000 mal schneller (und aufgrund der Tatsache, dass alles im Speicher und im Cache des Prozessors) :) Die Ergebnisse sind einfach umwerfend. Etwa 2000 Durchläufe in 1 Sekunde. :)

 
MetaDriver:

Zusammenfassung - Die 90er Jahre sind vorbei, Fließkommaarithmetik funktioniert heute sehr schnell.

Selbst die Umstellung auf Ganzzahlarithmetik ist (im Kontext des Handels) nicht sinnvoll - der Gewinn ist vernachlässigbar, wenn nicht gar illusorisch.

Diejenigen, die in den letzten ... dreißig Jahren programmiert haben, wissen das schon längst.

Außerdem haben wir nicht umsonst auf SSE2 umgestellt, denn ohne SSE2 gibt es keine allgemeine Leistungssteigerung.

 
Renat:

Wer in den letzten ...zig Jahren programmiert hat, der weiß es schon lange.

Nicht umsonst haben wir auf SSE2 umgestellt, denn ohne SSE2 werden wir keine allgemeine Leistungsverbesserung sehen.

Ich habe einen Tick in 32 Bits gepackt (asc, bid und time). Und ich habe eine Beschleunigung erhalten, die bereits nutzbar ist.

:) Außerdem gehe ich nicht wie MT5 nach dem Gedächtnis vor - alle Varianten der Suche gehen um die Leiste herum, nicht umgekehrt. :) Fliegen!!! :)

**

Übrigens, wenn es nicht zu schwer ist, es auf MT zu tun, habe ich dort oben geschrieben.

 
Academic:
Ich setze ein Häkchen in 32 Bit ( asc, bid und time ) . Und ich habe einen Geschwindigkeitsschub bekommen, der bereits nutzbar ist.

Im Traum kann man noch viel mehr tun... Nur die Praxis weckt mich auf und verdirbt alles.

Aber nichts da, es wird heute Abend einen neuen Höhenflug geben!

 
Renat:

Du kannst viel mehr als das im Schlaf... Nur die Praxis weckt mich auf und verdirbt alles.

Aber nichts, heute Abend wird ein neuer Höhenflug stattfinden!

Du hast keine Angst, verschmutzt zu werden. Ich lüge nicht. :) Es ist leicht zu pauken, man muss nur daran denken. Ja... Ich bin erstaunt über das Selbstvertrauen, das ich im Schlaf habe. :)
 
Academic:
Du hast keine Angst, verschmutzt zu werden. Ich lüge nicht. :) Es ist leicht zu pauken, man muss nur daran denken. Ja... Ich bin erstaunt über das Selbstvertrauen, das ich im Schlaf habe. :)

Ich sage nicht umsonst ständig "Praxis".

Wir haben schon lange und erfolgreich eine extreme Bit-für-Bit-Verpackung von Zitaten bei der Übertragung über das Netz vorgenommen. Die durchschnittliche Komprimierung beträgt 1:13, d. h. 10 Jahre einer einminütigen Geschichte werden auf 10-12 MB komprimiert.

Aber in der Praxis dauert die Komprimierung (ganz zu schweigen von den mathematischen Operationen) dieses Durcheinanders so lange, dass Geschwindigkeit nicht in Frage kommt.

 
Renat:

Ich sage nicht umsonst ständig "Praxis".

Wir haben eine lange und erfolgreiche Geschichte der extremen Bit-für-Bit-Verpackung von Angeboten bei der Übertragung über das Netz. Die durchschnittliche Komprimierung beträgt 1:13, d. h. 10 Jahre einer einminütigen Geschichte werden auf 10-12 MB komprimiert.

Aber in der Praxis dauert die Komprimierung (ganz zu schweigen von den mathematischen Operationen) dieses Durcheinanders so lange, dass Geschwindigkeit nicht in Frage kommt.

Ich sage Ihnen, dass Sie Erfahrung in der Programmierung von Hochleistungsanwendungen haben müssen. Man muss kein Theoretiker sein, es dauert nicht länger als fünf Maschinenbefehle, um diese 32 Bits herauszufinden.
 
MetaDriver:
...

Amen.

// Ich wiederhole. Die Tests wurden auf einem separaten Computer durchgeführt. Um nicht in überflüssige Illusionen zu verfallen, bitte ich diejenigen, die bereit sind, den Test auf ihrem Computer durchzuführen und die Ergebnisse mit Angabe der Hardware-Parameter zu veröffentlichen.

// Mein Computer: 2 Gigabyte RAM, Sempron 3100+ 2,2 GHz Prozessor, 32 Bit, WinXP Betriebssystem

Das sagten auch die harten sibirischen Holzfäller :o)

2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time int test = 78 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time long test = 125 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time double test = 94 ms; // 1000000 calls
2011.04.04 20:30:59     RationalSpeedTest (USDCHF,M1)   Common time IntRational test = 1391 ms; // 1000000 calls
2011.04.04 20:30:58     RationalSpeedTest (USDCHF,M1)   Common time LongRational test = 1015 ms; // 1000000 calls
P4 3 Гц [32 бита] 1Гб оперативы, ОС: Windows XP SP 3 версия 5.1 сборка 2600  

Geben Sie mir eine weitere Null in Count zur Verdeutlichung

2011.04.04 20:39:22     RationalSpeedTest (USDCHF,M1)   Common time int test = 718 ms; // 10000000 calls
2011.04.04 20:39:22     RationalSpeedTest (USDCHF,M1)   Common time long test = 1266 ms; // 10000000 calls
2011.04.04 20:39:20     RationalSpeedTest (USDCHF,M1)   Common time double test = 1000 ms; // 10000000 calls
2011.04.04 20:39:19     RationalSpeedTest (USDCHF,M1)   Common time IntRational test = 13156 ms; // 10000000 calls
2011.04.04 20:39:06     RationalSpeedTest (USDCHF,M1)   Common time LongRational test = 9282 ms; // 10000000 calls
 
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time int test = 63 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time long test = 94 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time double test = 47 ms; // 1000000 calls
2011.04.04 22:36:01    RationalSpeedTest (EURUSD,H1)    Common time IntRational test = 734 ms; // 1000000 calls
2011.04.04 22:36:00    RationalSpeedTest (EURUSD,H1)    Common time LongRational test = 594 ms; // 1000000 calls
AMD Phenom 9850 Quad-Core (2.5GHz), 2Gb, WinXP SP3 32