Ottenere il numero di posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5 - pagina 15
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
se ArrayCopy() è fatto nello stesso modo di Cysh memmove(),
Penso che la velocità di ArrayCopy() dipenda dalla velocità di allocazione della memoria, se la memoria intermedia del buffer è pronta per la copia, ArrayCopy() sarà eseguita molto rapidamente, se la memoria non è allocata, si avvieranno richieste al sistema operativo per allocare la memoria
potete provare a testarlo: fate una chiamata ad ArrayCopy() con un grande volume di dati, preparando così la memoria buffer per lo swapping, e poi fate un ciclo con ArrayCopy() con un volume di dati più piccolo da copiare e poi misurate la velocità
Nel nostro esempio attuale, la copia viene eseguita in un array statico, ma in generale è interessante, ovviamente, quando ArrayCopy è più lento di un semplice for. Se avete bisogno di allocare memoria, dovrete farlo comunque, non importa come lo fate.
Nel nostro esempio attuale, la copia viene eseguita su un array statico, ma in generale è interessante, ovviamente, quando ArrayCopy è più lento del semplice for. Se abbiamo bisogno di allocare memoria, dovremo farlo comunque.
Non importa se è statico o dinamico, non sappiamo come ArrayCopy() sia implementato, ho solo supposto che sia un "wrapper" sopra le funzioni standard Cish, memmove() di solito funziona tramite un buffer aggiuntivo... beh, come al solito, è come è stato scritto prima, è difficile dire come e quale compilatore lavora
SZY: non so proprio come testare il tempo di esecuzione in MQL ((( - ho provato un paio di volte, credo di aver preso esempi dalla guida, i risultati sono in qualche modo molto diversi, e ho ignorato questa domanda per necessità - non testo le prestazioni, di solito guardo nel profiler, cosa e come viene eseguito nel tempo
Non so proprio come testare la velocità di esecuzione in MQL ((( - Ho provato un paio di volte, credo di aver preso esempi dall'aiuto, ma i risultati erano molto diversi per qualche motivo, e ho rinunciato a questo problema perché non faccio test sulle prestazioni, di solito uso il profiler per vedere come e cosa viene eseguito nel tempo
Ecco il modo più semplice, che ho usato sopra
Ecco il modo più semplice che ho usato sopra
Grazie, ricevuto, lo testerò domani
Sì, questo funzionerà molto più velocemente (sostituito dove possibile da ArrayCopy, il resto è lo stesso):
Te l'ho detto, ho scritto la prima cosa che mi è venuta in mente senza nessun test))
Questa variante non è diversa dalla mia. Le misure (tempo minimo su 10 tentativi) lo dimostrano.
Si può vedere che la variante con ciclo è più veloce, perché ciclo di 60 /4 = 15 elementi.
Questa variante non è diversa dalla mia.
Apparentemente sì, solo il tipo di struttura e il tipo di array sono arbitrari.
Potete vedere che la variante del ciclo è più veloce, perché il ciclo di 60 /4 = 15 elementi.
Stranamente, ho ottenuto più velocemente di ArrayCopy con lo stesso MqlTicks e int...
Stranamente, ho ottenuto più velocemente di ArrayCopy con lo stesso MqlTicks e int...
Lo sto eseguendo in MT5x64.
Apparentemente, sì, ma il tipo di struttura e il tipo di array sono arbitrari.
Ho volutamente evitato il caso comune per permettere a più persone di partecipare.
Finora
In esecuzione in MT5x64.
Volutamente bypassato il caso generale in modo che più persone potessero partecipare.
Finora.
Immagino che il tuo codice sia già più veloce :)
Devo aggiungere un sacco di codice di servizio per migliorare la funzionalità di ArrayCopy (source start, dest start, count) e controllare i parametri per la correttezza...
In generale, hai così tante opere/librerie fighe che è strano che tu chieda e discuta la soluzione migliore sul forum :)
È strano che tu chieda e discuta la soluzione migliore sul forum :)
Ne ho bisogno per la libreria HistoryTicks. Grazie per aver partecipato.