Velocità di esecuzione delle funzioni ceil(),round(),floor() - pagina 8

 
Nikolai Semko:

Opzione per numeri positivi e negativi:

Questo sembra essere un vero e proprio sostituto di ceil(),round(),floor(), che dà un vantaggio di velocità di 3-4 volte.

Sembra più o meno decente. Ho eseguito la vostra _round(), ricordatevi di mostrare la funzione compare_prezzi(). Quindi, c'è uno script che cerca i modelli di prezzo, ovviamente compare_prezzi() è chiamato lì molto attivamente. Risultati:

confronta_prezzi con std round e con controllo differenza punti = 13 sec
confronta_prezzi con std round e con controllo differenza punti disattivato = 19 sec
confronta_prezzi con il tuo _round e con controllo differenza punti disattivato = 15 sec
confronta_prezzi con il tuo _round e con controllo differenza punti attivato = 13 sec


La conclusione è che la parte del leone delle chiamate nei compiti del mondo reale finisce al controllo di Point. Il tempo è lo stesso (quando il controllo delle differenze a Point è acceso), ma il campo di lavoro è sceso da 1,7*10^308 a circa 2*10^9 (o ^19 se si usa il lungo) (anche se un grande giro è necessario come quinta ruota in un carrello). Non so, forse tu usi queste funzioni in modo esotico in qualche modo...

SZU:

Alert( _ceil(-1+DBL_EPSILON) );   // 2.220446049250313e-16

avvolgere x tra parentesi.

 
Se il tempo di CPU che risparmiate è moltiplicato per un miliardo, anche allora sarebbe meno del tempo che avete passato a discutere IMHO
 
Alexey Navoykov:

Sembra che Nikolai avesse ragione sui nerd )).

Personalmente, non ho visto nessun attacco personale. E hai un sacco di lettere nei tuoi post, ma tutto è off-topic, sembra che tu stia discutendo solo per il gusto di discutere.


 
LRA:
Se il tempo di CPU che risparmiate è moltiplicato per un miliardo, anche allora sarebbe meno del tempo che avete speso nella discussione IMHO

Sì, sono d'accordo, il tempo sprecato è un peccato - fatto.

 
Nikolai Semko:

Sì, sono d'accordo, è una perdita di tempo - questo è un fatto.

Allora perché hai scritto qui, in primo luogo? Pensavo che fosse per la discussione, la discussione. Beh, non essere così irragionevole. Ma non rilassatevi, avete un intero campo non arato davanti a voi https://www.mql5.com/ru/docs/math. Buona fortuna))

Документация по MQL5: Математические функции
Документация по MQL5: Математические функции
  • www.mql5.com
Математические функции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
pavlick_:

Sembra più o meno decente. Ho eseguito la vostra _round(), ricordatevi di mostrare la funzione compare_prezzi(). Quindi, c'è uno script che cerca i modelli di prezzo, ovviamente compare_prezzi() è chiamato lì molto attivamente. Risultati:

Quindi la conclusione è che la parte del leone delle chiamate nei compiti reali finisce al controllo di Point. Il tempo è lo stesso (quando il controllo delle differenze a Point è acceso), mentre il campo di lavoro è sceso da 1,7*10^308 a circa 2*10^9 (o ^19 se si usa lungo) (anche se è necessario un grande giro come quinta ruota di un carrello). Non so, forse tu usi queste funzioni in modo esotico in qualche modo...

ZS:

Avvolgere x tra parentesi.


Non sono riuscito a capire - in quali casi è necessario usare questa funzione:?

// 0 - first is greater than second
// 1 - equal
// 2 - second is greater than first
uchar compare_prices(double first, double second)
{
   if(first - second >= _Point)
      return 0;
   if(second - first >= _Point)
      return 2;

   first = round(first/_Point);
   second = round(second/_Point);
   
   if(first > second)
      return 0;
   if(first < second)
      return 2;
   return 1;
}

perché non usaresemplicemente if (first>second), o se avete bisogno di un risultato (0,1 o 2) :

#define _compare_prices(f,s) (f>s)?0:(f<s)?2:1;

Perché qui non avete bisogno di funzioni di arrotondamento.

O è solo per un test?

 
Nikolai Semko:

No, questa è una funzione reale. Solo per l'interesse, l'ho modificato nel mio lavoro. Nikolai, beh, capisco che non c'è bisogno di discutere. Non c'è altro da dire.

 
pavlick_:

No, questa è una funzione reale. Solo per l'interesse, l'ho messo nel mio lavoro. Nikolai, beh, capisco che non c'è bisogno di una discussione. Non c'è altro da dire.

pavlick_:

Allora perché hai scritto qui? Pensavo fosse per la discussione, sto discutendo. Beh, non essere così irragionevole. Ma non ti rilassi, davanti a te tutto il campo non arato https://www.mql5.com/ru/docs/math. Buona fortuna).

:) Quello che volevo dire è che è un peccato per il tempo sprecato per il "chiarimento delle relazioni", purtroppo in questo thread ha avuto luogo. Non si perde tempo in discussioni costruttive.