voracità della memoria RAM di MT5, problemi con la lettura/scrittura di file di grandi dimensioni - pagina 5
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
quindi è un array bidimensionale, una matrice. Scrivilo.
Puoi mostrarmi un esempio di come scrivere e leggere gli array multidimensionali? È chiaro in teoria, ma l'implementazione non è chiara.
Puoi mostrarmi un esempio di come scrivere e leggere gli array multidimensionali? È chiaro in teoria, ma l'attuazione non è chiara.
Proprio come gli array unidimensionali, con WriteArray()
Sono a mio agio con la classe, la uso da 3 anni ormai, da MT4 - è comoda, ma dannazione, è lenta.
Naturalmente è facile leggere una stringa, ma trasformare il tutto in una struttura cellulare funzionante è molto più difficile.
Cosa vuol dire che non posso usare le classi? Lo faccio, e inoltre il dipendente di metaquote ha scritto la classe. E poi, ho effettivamente assunto una persona, ho pagato e mi aspettavo di avere un prodotto finito, ma mi è stato detto che va bene essere lenti... Ho creduto loro, ma ora ho anche l'eccesso di memoria - sono indignato.
La classe è progettata per piccoli file. Non importa affatto chi ha creato la classe. Ora abbiamo bisogno di un approccio diverso alla lettura di un file, in modo che la classe gestisca male quel file.
La classe è progettata per piccoli file. Non importa affatto chi ha creato la classe. Ora hai bisogno di un approccio diverso per leggere un file, quindi quella classe non gestisce bene quel file.
Lo perpetuerò. Fottuto, grazie.
proprio come quelli monodimensionali, attraverso WriteArray()
Ho trovato un esempio, dovrò provarlo, dovrò scrivere due file - per la comprensione generale e probabilmente per accelerare l'elaborazione.
Grazie.
Aggiunto: ho capito che si può scrivere solo 1 array alla volta, il che ovviamente non è molto conveniente.La classe è progettata per piccoli file. Non importa affatto chi ha creato la classe. Ora avete bisogno di un approccio diverso per leggere un file, quindi quella classe non gestisce bene quel file.
Se la memoria non mi inganna, ho subito detto che abbiamo bisogno di lavorare con file di grandi dimensioni, e per esempio, è stato dato un grande file - decine di megabyte, se non un centinaio (abbiamo bisogno di guardare la corrispondenza, e nel formato attuale non è conveniente farlo).
Ho trovato un esempio, devo provarlo, dovrò scrivere due file - per la comprensione generale, e probabilmente per accelerare l'elaborazione.
Grazie.
Aggiunto: ho capito che si può scrivere solo 1 array alla volta, il che ovviamente non è molto conveniente.Molto conveniente :)
molto utile :)
Non è conveniente perché si deve creare un file separato per i diversi tipi di dati.
Non è conveniente, perché bisogna creare un file separato per i diversi tipi di dati.
Bene, potete metterlo nella stessa directory in modo che non sia disperso. Non avrete alcun problema. È quello che faccio sempre per gli esperti. Creo immediatamente una directory chiamata nome del programma/numero di conto e ci ho messo tutti i file.
Raccomando di fare prima un cambiamento minimo, in modo che la riallocazione della memoria sia fatta meno frequentemente. Due linee
m_total_rows++;
ArrayResize(m_cells,m_total_rows*m_total_columns,10000);
in bool CSVReader::AddData(string data_str,bool header) sostituire con
m_total_rows++;
if (m_total_rows*m_total_columns>ArraySize(m_cells)) ArrayResize(m_cells,2*m_total_rows*m_total_columns);
Il numero di riallocazioni di memoria con la copia dovrebbe diventare O(log(n,2)) invece di O(n). 20 invece di 600 mila. Forse questo è abbastanza per te ora.