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 si scrivono tali classi:
a giudicare dalla tua ricerca, la classe B sarà più lenta da eseguire se usi frequentemente campi struttura nei calcoli?
Quindi, stavamo discutendo il tempo di attraversare un array di oggetti)))
Secondo il tuo esempio sarà lo stesso in plus, ma in mql c'è una sfumatura, ci sono due campi impliciti, che vanno per primi, quindi, il campo dati sarà accessibile ad un offset, cioè, saranno eseguiti dei calcoli aggiuntivi durante la dereferenziazione.
Quindi, stavamo discutendo il tempo di attraversare l'array di oggetti))
Secondo il tuo esempio sarà lo stesso in plus, ma in mql c'è una sfumatura, ci sono due campi impliciti, che vanno per primi, quindi, il campo dati sarà avvicinato da shift, cioè da calcoli aggiuntivi durante la dereferenziazione.
Grazie, questo è utile!
Quindi, stavamo discutendo il tempo di attraversare l'array di oggetti))
Secondo il tuo esempio sarà lo stesso in plus, ma in mql c'è una sfumatura: ci sono due campi impliciti che vanno per primi, quindi il campo dati sarà accessibile con un offset, cioè verranno eseguiti dei calcoli di dereferenziazione aggiuntivi.
Quindi, nessun misticismo - le leggi della fisica in azione.
Non si adatta alle "leggi della fisica".
Questo è un risultato paradossale. I calcoli più complessi vengono eseguiti 1,5 volte più velocemente e non dipendono dalle dimensioni.
Quindi, stavamo discutendo il tempo di attraversamento dell'array di oggetti)))
Secondo il tuo esempio sarà lo stesso in plus, ma c'è una sottigliezza in mql: ci sono due campi impliciti che vanno per primi, quindi il campo dati sarà accessibile ad un offset, cioè verranno eseguiti ulteriori calcoli di dereferenziazione.
Grazie a Vladimir per lo studio dell'assemblatore.
E come suggerisce Alexey, l'overhead è creato dalle classi.
Da questo possiamo concludere che se si può fare a meno delle classi, è meglio scrivere codice in stile procedurale.
Cioè, se il compito non richiede velocità, potete avvolgerlo in una classe, ma se avete a che fare con i tic, per esempio, è meglio usarlo direttamente senza wrapper.
In linea di principio, questo è l'approccio che ho seguito, e spesso trovando un esempio di una classe, smonto i suoi metodi in approccio procedurale.
Grazie Vladimir per lo studio di montaggio.
E come suggerisce Alexey, l'overhead crea delle classi.
Da questo possiamo concludere che se possiamo fare a meno delle classi, è meglio scrivere codice in stile procedurale.
Cioè, se il compito non richiede velocità, potete avvolgerlo in una classe, ma se avete a che fare con i tic, per esempio, è meglio scrivere direttamente senza wrapper.
In linea di principio, questo è l'approccio che ho seguito e spesso quando trovo un esempio di una classe, smonto i suoi metodi usando l'approccio procedurale.
C'è un troll sul forum...
Non capivo perché alcuni utenti chiedessero la funzione di ignorare, ah come manca ora...
Forum sul trading, sistemi di trading automatico e test di strategia
Domande OOP in MQL5
fxsaber, 2020.05.30 14:06
Non ho idea di cosa farci. Ho fatto strutture semplici.
Non sono sicuro del perché l'accesso al primo campo di una struttura semplice dipenda dalla sua dimensione.
Per le strutture di dimensione 20 e 84 byte questo è 0,93GB e 3,91GB di dati, rispettivamente.
E nel quadro del vostro calcolo, presumibilmente, tutta questa memoria passa attraverso la cache del processore.
E una spiegazione molto logica per questi risultati sarebbe che 0,93 GB di dati verrebbero scaricati dalla memoria nella cache della CPU quattro volte più velocemente dei 3,91 GB di dati.
E i risultati del test C++?
Perché ho visto codice assembler, ma nessun risultato di test, o ho guardato male?
C'è un troll sul forum...
Non capivo perché alcuni utenti chiedessero la funzione di ignorare, ah come manca ora...
Dovresti badare a te stesso, non agli altri.
Non tu e non per te era la risposta.
Ignorare in silenzio ))
Per strutture di 20 e 84 byte, sono rispettivamente 0,93GB e 3,91GB di dati.
E come parte del vostro calcolo, presumibilmente tutta questa memoria passa attraverso la cache del processore.
E una spiegazione molto logica per questi risultati sarebbe che 0,93 GB di dati verrebbero scaricati dalla memoria nella cache della CPU quattro volte più velocemente dei 3,91 GB di dati.
E i risultati del test C++?
Perché ho visto codice assembler, ma nessun risultato di test, o ho guardato male?
Grazie Vladimir per lo studio di montaggio.
E come suggerisce Alexey, l'overhead crea delle classi.
Da questo possiamo concludere che se possiamo fare a meno delle classi, è meglio scrivere codice in stile procedurale.
Cioè, se il compito non richiede velocità, potete avvolgerlo in una classe, ma se avete a che fare con i tic, per esempio, è meglio usarlo direttamente senza wrapper.
In linea di principio, questo è l'approccio che prendo, e spesso trovando un esempio di una classe, smonto i suoi metodi in stile procedurale.
Puoi usare una struttura invece di una classe, vanno bene.