Un po' sorpreso :) Ho pensato di condividere e fare una domanda NON retorica. - pagina 22

 
MetaDriver:

1. questa è un'operazione una tantum per ogni ripresa. La perdita è insignificante, poi solidi guadagni. :) Presumo che il quoziente originale sia logaritmato una volta e convertito in rappresentazione intera.

2. questo è corretto. Anche se è veloce, perché c'è un algoritmo veloce che usa gli spostamenti di bit.

3. non più di controlli di overflow.

4. la parte intera non ha bisogno di essere allocata. la frazione è memorizzata come una coppia di longs e, se possibile, come una coppia di ints.

5. Esattamente la stessa quantità se memorizzata come coppia di longs, e la metà nel caso in cui ci siano abbastanza ints (dipende dai requisiti dell'algoritmo).

Se consideriamo che il principale consumatore di memoria è una citazione, allora con la rappresentazione intera il guadagno di spazio è innegabile.

Mentre il punto principale non è nel risparmio di memoria, ma nell'accelerazione. Questo è molto più importante.

--

Il problema di Academician non è che ha torto. È che sta facendo sembrare gli altri sbagliati.

È questo che irrita i presenti e rifiuta le idee sane... Insieme all'acqua sporca... :(

Vladimir, non sei confuso? Quello che hai descritto è aritmetica di basso livello doppio e flotta, la stessa aritmetica che "Academician" propone di introdurre richiede (anche senza allocazione di una parte intera) almeno due mantidi per la memorizzazione.

Beh, dov'è l'economia in questo? 8 byte per il doppio e 2*4 byte per l'int.

Nel migliore dei casi si arriva al risultato che è già attuato.

 
Urain:

Vladimir, non sei confuso? Quello che hai descritto è un'aritmetica di basso livello di doppio e flotta, la stessa aritmetica che "Akademik" propone di introdurre richiede almeno due manti per la memorizzazione (anche senza la parte intera).

Quindi dov'è il risparmio in questo. 8 byte per il doppio e 2*4 byte per l'int.

Nel migliore dei casi si arriva al risultato che è già attuato.

Quindi memorizzare tutti i punti (denominatori) di quantità unidimensionali nello stesso posto - sono gli stessi. :)

Crea un tipo - un valore in un decimo di punto e questo è tutto. E conservare questo denominatore separatamente.

 
MetaDriver:

Ci proverò. Su mql5, se vuoi... :)

Ho solo bisogno di tempo. Dovrò scrivere una biblioteca.

Ho provato una volta, non ci sono caramelle, è solo una perdita di tempo.

Decomponete il doppio in un numero binario e rappresentatelo come due int e vi renderete conto che tutto ciò che descrivete è già implementato in aritmetica doppia.

Solo l'aritmetica è implementata ad un livello basso, e voi la farete ad un livello più alto, quindi perderete prestazioni e memoria.

 

I miei cinque centesimi.

I numeri interi sono un modo più naturale di presentare le informazioni sulle quote. Dopo tutto, è impossibile che un numero di punti non sia un intero. La memorizzazione di tali numeri è più economica, e quindi la velocità di download a livello di disco-memoria e memoria-processore è più alta. Gli algoritmi, se ben pensati, sono molto più veloci degli algoritmi di numeri reali, e le operazioni batch SSE sono fuori concorso. Ma c'è un grosso problema con i numeri interi: solo le persone che contano possono lavorare con loro. E, naturalmente, il terminale deve avere il supporto asm. Per il consumatore di massa MQ questi numeri non sono adatti.


A proposito, il problema del controllo dell'overflow è implementato a livello di interrupts hardware, non c'è niente di male, anzi, la gente ci ha pensato molto tempo fa quando sono stati creati i processori. In principio c'è un sacco di modi e trucchi di programmazione di algoritmi interi, ma tutto questo, ripeto, non è per gli utenti di massa.


Non vedo quale sia il motivo della discussione. Puoi creare un algoritmo di test/ottimizzazione più veloce di quello che hai nel tuo tester? Si può, ma non sarà un algoritmo universale che vivrà in una serra in presenza dell'autore - pochissime persone hanno bisogno di una cosa del genere - non è un prodotto di massa. Per questo motivo, affermazioni del tipo "il mio è più veloce" possono essere viste solo come prova di incomparabilità e mancanza di comprensione del fatto che non si può paragonare l'incomparabile.

 
Urain:

Ho provato una volta, non ci sono caramelle, è solo una perdita di tempo.

Decomponete il doppio in un numero binario e rappresentatelo come due int e vi renderete conto che tutto ciò che descrivete è già implementato in aritmetica doppia.

ZZY Solo l'aritmetica è implementata ad un livello basso, e la farete ad un livello più alto, dove perderete prestazioni e memoria.

"Se non lo raggiungo, mi terrò caldo", come diceva il gallo che insegue la gallina... :)

In effetti, ci sto pensando da molto tempo, probabilmente è il momento di fare un tentativo.

 
MetaDriver:

"Se non lo raggiungo, mi terrò caldo", come disse il gallo, inseguendo la gallina... :)

In effetti, è da un po' che ci penso, quindi penso che sia il momento di fare un tentativo.

Algoritmo NOD ricorsivo da dare?
 
TheXpert:

Per quale motivo? C++ è accettato.

Darò un'occhiata. Devo prima sentirlo. Anch'io sono curioso di saperne di più.
 
Urain:
Volete un algoritmo NOD ricorsivo?
Se con spostamenti di bit, vai avanti. Se con la divisione modulo, no.
 
MetaDriver:
Se è con spostamenti di bit, vai avanti. Se con la divisione per modulo, allora non farlo.

Vuoi dividere un numero (non necessariamente un multiplo di 2) per un altro numero (non necessariamente un multiplo di 2) usando uno spostamento di bit?

Ok, vi butto dentro quello che ho, e poi decidete da soli se ne avete bisogno o no.

//+------------------------------------------------------------------+
long GreatestCommonDivisor(long v0,long v1)
  {
   return(GCD(fmax(fabs(v0),fabs(v1)),fmin(fabs(v0),fabs(v1))));
  }
//+------------------------------------------------------------------+
long GCD(long max,long min)
  {
   if(min>0)return(GCD(min,max%min));
   else return(max);
  }
//+------------------------------------------------------------------+
 
DDFedor:
Le faccine nei tuoi futuri post saranno tagliate. Tenetelo a mente.

Grazie per averlo ammesso - hai tagliato le emoticon, ma chi cancella interi post?

Come nota a margine, Accademico, Penso che sia fantastico che abbiate un cosiddetto "calcolatore", ma vorrei chiedere se è possibile ottimizzarlo automaticamente durante il trading?