Errori, bug, domande - pagina 2878
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
quale variante di conversione funzionerà più velocemente durante l'ottimizzazione
Questo sarà chiamato solo una volta per ogni passaggio. Pertanto, non fa alcuna differenza.
Questo sarà chiamato solo una volta per l'intero passaggio. Quindi non fa differenza.
quindi sì... Ma ho intenzione di eseguirlo per un paio di giorni per l'ottimizzazione, voglio misurare le prestazioni in qualche modo ..... anche se sospetto che la variante 1 sarà più efficiente, non ci saranno 100500 volte di copia in array
Sì... Ma ho intenzione di far funzionare il computer per un paio di giorni per ottimizzarlo, voglio misurare le prestazioni in qualche modo ..... anche se sospetto che l'opzione 1 sarà più efficiente, non ci saranno 100500 volte di copia in array
L'unione non è copiare su array, è un'interpretazione diversa dello stesso spazio di memoria. quindi la seconda opzione è probabilmente più veloce, ma come notato sopra, non importa.
Sì... Ma ho intenzione di far funzionare il computer per un paio di giorni per ottimizzarlo, voglio misurare le prestazioni in qualche modo ..... anche se sospetto che l'opzione 1 sarà più efficiente, non ci saranno 100500 volte di copia in array
c'è un vecchio modo di misurare la velocità
nello stile di
per (int i=0; i< 1000000; i++) {il nostro codice1}....
per (int i=0; i< 1000000; i++) {il nostro codice2}....
L'Unione non è così veloce come sembra. Ho scommesso sul primo.
Scommetto anche sulla prima! Gli operatori binari sono molte volte più veloci dell'operatore if, anche se la seconda non ce l'ha.
controllato:
2020.10.15 21:48:01.401 SpeedTst (EURUSD,H1) tst 1 : : : loops=10000000000 ms=10864370
2020.10.15 21:48:12.264 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000000 ms=10862287
la differenza non è significativa, è altamente probabile che se cambiamo i test nell'ordine opposto, i risultati saranno opposti
non critico
non è una differenza significativa, è altamente probabile che se si scambiano i test, i risultati saranno opposti
È molto probabile che il compilatore abbia generato lo stesso codice per entrambi i casi. In questo caso, basta scegliere quello che soggettivamente ti piace di più
controllato:
2020.10.15 21:48:01.401 SpeedTst (EURUSD,H1) tst 1 : : : loops=10000000000 ms=10864370
2020.10.15 21:48:12.264 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000000 ms=10862287
la differenza non è significativa, è altamente probabile che se cambiamo i test nell'ordine opposto, i risultati saranno opposti
non critico
Lo script qui dimostra che il tempo di creazione dei numeri casuali può essere non uniforme e dipende dal volume delle variabili create))
E il codice che ci serve in questo numero di ripetizioni mi prende 0 ms.
Ancora nessuna risposta.
o l'ottimizzatore di codice sta tagliando qualcosa di inutileSembra esserci uno script che dimostra che la tempistica della generazione di numeri casuali può essere disuguale
no rand() è una funzione normale, funziona sempre allo stesso modo
Ma quando si testa la velocità, se lo si inizializza con delle costanti, i test "accelereranno" durante l'esecuzione - l'ottimizzazione del codice in MQL durante l'esecuzione è buona
in generale, è stato controllato molte volte
e molto dipende dalla dimensione delle variabili create)))
naturalmente, l'allocazione della memoria richiede tempo, l'ho controllato, sto testando sia oggetti creati dinamicamente ( nuovo puntatore ) che solo oggetti in ambito locale, il test si estende 100500 volte per nuovo + cancellazione
l'intera domanda era, perché nel tester in ambito globale la memoria è allocata alle variabili una volta e non ad ogni passaggio - ma ho bisogno di array uint, così ho testato con questo script, non come l'ho scritto la prima volta
E il codice di cui abbiamo bisogno in questo numero di ripetizioni mi prende 0 ms
ancora nessuna risposta
O l'ottimizzatore di codice sta tagliando qualcosa di inutile.hai usato il mio script? - o non hai aspettato la fine del test e hai interrotto o hai fatto un overflow di ulong - il primo parametro della macro è 10^ count
è molto probabile che il compilatore abbia generato lo stesso codice per entrambi i casi. in questo caso, basta scegliere quello che soggettivamente ti piace di più.
sì, forse sì
È quello che stavo chiedendo - ho letto molte volte che i processori moderni possono eseguire più di un'operazione elementare per clock ottimizzando la pipeline di istruzioni .... un sacco di bla-bla-bla... e il punto è che le istruzioni aritmetiche sono eseguite dal processore in un numero imprevedibile di cicli di clock
Per quanto riguarda la ramificazione e le operazioni di allocazione della memoria, sono ottimizzate molto male dal processore, quindi non cercate l'ottimizzazione nella semplificazione dell'aritmetica, cercate di scrivere codice massimamente lineare con la minima ramificazione, e le variabili sono meglio dichiarate e assegnate ai valori subito prima dei calcoli, ciò permette alla pipeline delle istruzioni e alla predizione del campionamento della cache di ottimizzare questo codice
Cioè il campionamento dei valori degli elementi nell'array (indirizzamento) molto probabilmente non sarà cruciale per la velocità - ho pensato che ci sarebbe stato un vantaggio di spostamento rispetto all'unione, si scopre che non c'è alcuna differenza