Un peu surpris :) J'ai pensé que je devais partager et poser une question NON rhétorique. - page 24

 
TheXpert:
Ce serait parfait pour le tester sur l'EMA.

Ahem... Je ne pense pas que ce soit encore nécessaire. La situation est devenue plus claire. Comme il est de coutume dans ce fil de discussion - un peu surpris et j'ai pensé que je devais partager... :)

Voici un extrait du test, le test complet est dans la bande-annonce, la bibliothèque y est aussi :

..........
....................
    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");
..................
......

Résultats :

2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Temps commun int test = 62 ms ; // 1000000 appels
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Temps commun long test = 141 ms ; // 1000000 appels
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Temps commun double test = 62 ms ; // 1000000 appels
2011.04.04 20:29:15 RationalSpeedTest (EURUSD,M20) Temps commun IntRational test = 1032 ms ; // 1000000 appels
2011.04.04 20:29:14 RationalSpeedTest (EURUSD,M20) Temps commun LongRational test = 921 ms ; // 1000000 appels

J'étais très perplexe : double et int se valaient absolument en vitesse d'opérations arithmétiques et en plus, long était le plus rapide, Rational était complètement foutu.

À la lumière de ces expériences, je me sens un peu réticent à construire un testeur d'entiers. :-))

Peut-être qu'avec d'autres processeurs les résultats seront un peu différents (je serai reconnaissant à ceux qui feront des tests et les publieront), mais je ne peux pas croire à de grandes différences.

Il est intéressant de noter qu'une fois, dans les inoubliables années 90, j'ai testé la différence entre les opérations en nombres entiers et en virgule flottante, et que les différences étaient assez notables (pour ne pas dire plus).

Résumé - Les années 90 sont révolues, l'arithmétique à virgule flottante fonctionne très rapidement de nos jours.

Même le passage à l'arithmétique des entiers n'est pas raisonnable (dans le contexte commercial) - le gain est négligeable, voire illusoire.

Résumé final - si Intel ne fait pas d'urgence le support de l'arithmétique rationnelle au niveau du fer, vous n'avez plus à vous en soucier... du moins en termes de performances. :)

Amen.

// Je vais répéter. Les tests ont été effectués sur un seul PC marmot, donc, pour ne pas se faire d'illusions, je demande à tout le monde d'effectuer le test sur leurs ordinateurs et de poster les résultats avec indication des paramètres de fer.

// Mon ordinateur : 2 gigas de RAM, processeur Sempron 3100+ 2,2 gigahertz, 32 bits, système d'exploitation WinXP.

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

Ahem... Je ne pense pas que ce soit encore nécessaire. La situation est devenue plus claire. Comme il est de coutume dans ce fil de discussion - un peu surpris et j'ai pensé que je devais partager... :)



99% des déductions ne nécessitent pas de dénominateur commun, donc le test n'est pas entièrement correct. Vous devez effectuer les vrais calculs et les faire correctement. Inty selon mes estimations est 1000000 fois plus rapide ( et du fait que tout est en mémoire et dans le cache du CPU) :) Les résultats sont tout simplement stupéfiants. Comme 2000 courses en 1 seconde. :)

 
MetaDriver:

Résumé - Les années 90 sont révolues, l 'arithmétique à virgule flottante fonctionne très rapidement de nos jours.

Même le passage à l'arithmétique des nombres entiers n'est pas raisonnable (dans le contexte du commerce) - le gain est négligeable, voire illusoire.

Ceux qui ont programmé au cours des trente dernières années le savent depuis longtemps.

D'ailleurs, ce n'est pas pour rien que nous sommes passés au SSE2, car sans lui, il n'y a pas d'amélioration générale des performances.

 
Renat:

Ceux qui programment depuis des centaines d'années le savent depuis longtemps.

Ce n'est pas pour rien que nous sommes passés à SSE2, car sans lui, nous ne verrons pas d'amélioration globale des performances.

J'ai emballé un tick en 32 bits (asc, bid et time). Et j'ai obtenu un gain de vitesse, ce qui est déjà utilisable.

:) De plus, je ne fonctionne pas par mémoire comme MT5 - toutes les variantes de la recherche font le tour de la barre, et non l'inverse. :) Voler ! !! :)

**

D'ailleurs, si ce n'est pas trop difficile de le faire sur MT, j'y ai écrit ci-dessus.

 
Academic:
Je mets un tick en 32 bits (asc, bid et time). Et j'ai obtenu un gain de vitesse, ce qui est déjà utilisable.

On peut faire beaucoup plus que ça dans un rêve... Seul l'entraînement me réveille et gâche tout.

Mais rien, il y aura un nouveau vol de fantaisie ce soir !

 
Renat:

Tu peux faire beaucoup plus que ça en dormant... Seul l'entraînement me réveille et gâche tout.

Mais rien, ce soir, ce sera un nouveau vol de fantaisie !

Tu n'as pas peur d'être pollué. Je ne mens pas. :) C'est facile de bachoter. Il suffit d'y penser. Ouais... Je suis étonné de la confiance en soi que j'ai dans mon sommeil. :)
 
Academic:
Tu n'as pas peur d'être pollué. Je ne mens pas. :) C'est facile de bachoter, il suffit d'y penser. Ouais... Je suis étonné de la confiance en soi que j'ai dans mon sommeil. :)

Je ne dis pas "entraînement" pour rien.

Nous faisons depuis longtemps et avec succès un conditionnement bit à bit extrême des citations lors de leur transmission sur le réseau. La compression moyenne est de 1:13, c'est-à-dire que 10 ans d'une histoire minuscule sont comprimés en 10-12 mb.

Mais dans la pratique, la compression (sans parler des opérations mathématiques sur celles-ci) de ce fatras prend tellement de temps que la vitesse est hors de question.

 
Renat:

Je ne dis pas "entraînement" pour rien.

Nous avons une longue et fructueuse histoire de conditionnement extrême bit par bit des devis lorsqu'ils sont transmis sur le réseau. La compression moyenne est de 1:13, c'est-à-dire que 10 ans d'une histoire d'une minute sont comprimés en 10-12 mb.

Mais dans la pratique, la compression (sans parler des opérations mathématiques sur celles-ci) de ce fatras prend tellement de temps que la vitesse est hors de question.

Je vous le dis, vous devez avoir de l'expérience dans la programmation d'applications à haute performance. Vous n'avez pas besoin d'être un théoricien, il ne vous faudra pas plus de temps pour comprendre ces 32 bits que cinq commandes machine.
 
MetaDriver:
...

Amen.

// Je répète. Les tests ont été effectués sur un ordinateur séparé, donc, afin de ne pas tomber dans des illusions superflues, je demande à ceux qui le souhaitent d'effectuer le test sur leur ordinateur et de poster les résultats avec indication des paramètres matériels.

// Mon ordinateur : 2 Gigs de RAM, processeur Sempron 3100+ 2.2 GHz, 32 bit, système d'exploitation WinXP

C'est aussi ce que disaient les bûcherons sibériens :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  

Donnez-moi un autre zéro dans Compte pour la clarté

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
Raison: