Tutti pensavano che l'argomento fosse esaurito, ma poi...
Ho rifatto l'algoritmo di ordinamento QuickSort per una matrice di strutture. La conclusione è che la semplice applicazione di un semplice algoritmo di ordinamento di array per ordinare un array di strutture porta al movimento "fisico" di grandi quantità di dati. Per evitare ciò, ho utilizzato una tabella di indice, in cui vengono eseguite tutte le permutazioni. Allo stesso tempo, ho utilizzato altre ottimizzazioni del codice. Per mantenere l'universalità per diversi tipi, ho usato un macro wrapper di fxsaber.
Di conseguenza, l'ordinamento dell'array MqlRates[30000] in base a 8 campi ha richiesto circa 3600 ms anziché 14900 ms. Questa è un'accelerazione superiore a 4x. Non ho controllato attentamente i risultati dell'ordinamento, l'ho lasciato cadere sui beta tester.
Grazie: ovviamente, fxsaber per il codice universale.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Perché? Abbiamo un argomento separato per questo?
Buona idea ))))
Dovremmo aprire un topicchiamato "Chickenshit... " )))))
Tutti pensavano che l'argomento fosse esaurito, ma poi...
Ho rifatto l'algoritmo di ordinamento QuickSort per una matrice di strutture. La conclusione è che la semplice applicazione di un semplice algoritmo di ordinamento di array per ordinare un array di strutture porta al movimento "fisico" di grandi quantità di dati. Per evitare ciò, ho utilizzato una tabella di indice, in cui vengono eseguite tutte le permutazioni. Allo stesso tempo, ho utilizzato altre ottimizzazioni del codice. Per mantenere l'universalità per diversi tipi, ho usato un macro wrapper di fxsaber.
Di conseguenza, l'ordinamento dell'array MqlRates[30000] in base a 8 campi ha richiesto circa 3600 ms anziché 14900 ms. Questa è un'accelerazione superiore a 4x. Non ho controllato attentamente i risultati dell'ordinamento, l'ho lasciato cadere sui beta tester.
Grazie: ovviamente, fxsaber per il codice universale.
UPD: Se non è ovvio, accedi alla struttura in alto nell'elenco ordinato: MqlRates first = Rates[ RatesIdx[0] ];