Errori, bug, domande - pagina 2880
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
no
se ci sono sezioni di codice ripetitive, si otterranno test di ottimizzazione!
Che differenza fa la durata di esecuzione di rand()?
Lasciate che venga eseguito a 2/3 del tempo del test, l'importante è rendere costante il tempo di rand()
Il vostro codice MQL userà le funzioni MQL del sistema, giusto? - che senso ha testare un codice perfetto?
)) la differenza di velocità potrebbe essere 4 volte a favore di uno dei metodi (da 1 a 4), ma poiché l'operazione rand è 10 volte più lenta del resto del codice, questa differenza non sarebbe visibile (da 11 a 14)
)) La differenza di velocità avrebbe potuto essere di 4 volte a favore di uno dei metodi (da 1 a 4), ma poiché l'operazione rand 10 volte più lunga del resto del codice, questa differenza non sarebbe stata visibile (da 11 a 14)
no, non potrebbe
la differenza è immediatamente visibile
controlliamo qualcosa che gli sviluppatori hanno annunciato nelle innovazioni, spesso scrivono che il tempo di accesso al timestamp per qualche funzione è stato ottimizzato = non controllato per molto tempo
2020.10.16 02:11:20.671 SpeedTst (EURUSD,H1) tst 1 : : : loops=10000000 ms=353174
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000 ms=1296043
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) 11304533.15558525 : 11303930.69247558
2020.10.16 02:11:44.012 SpeedTst (EURUSD,H1) tst 1 : : : loops=10000000 ms=359757
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000 ms=1357325
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) 11304350.05612442 : 11304321.21848488
per niente critico
Il tempo di esecuzione di rand() è costante, molto probabilmente è una comune funzione C++, cercate su google "rand c++ source code"
dovete inizializzarlo, ma se lo inizializzate con delle costanti potreste incontrare un'ottimizzazione
in generale, non capisco l'antipatia di rand()
un'opzione è quella di inizializzare con qualcosa come questo:
sarebbe veloce.
ha eseguito il tuo script, imho non corretto.
Il tempo principale è il caricamento del codice nella cache e poi nel processore
e aggiungere la discrezione del timer del sistema
otteniamo... quasi un numero casuale.
è necessario testarlo a lungo, circa 100500 volte, imho
rand() silenzia il risultato.
Sul mio computer, un'iterazione del ciclo richiede circa 1,5 nanosecondi.
Con due rand(), un'iterazione richiede il doppio del tempo - fino a quasi 3 nanosecondi. Dovreste rendervi conto che in questa iterazione due accessi a un elemento di un grande array svaniranno, il che è anche piuttosto costoso.
Significa che circa 2/3 di tutto il tempo di iterazione è speso per due rands(). Certo, mi sono un po' eccitato su "di un ordine di grandezza" ))
Non capisco come si possa incorrere nell'ottimizzazione quando una matrice pre-preparata viene riempita di numeri casuali.
Si è già discusso una volta delle prestazioni di rand(). Ho anche provato a scrivere io stesso una funzione simile.https://www.mql5.com/ru/forum/170952/page137#comment_12010041
risultato
Penso che la linea di fondo sia che non fa quasi nessuna differenza se usate l'unione o lo spostamento binario.
Io uso entrambi questi metodi nella mia libreria iCanvas per lavorare con il colore.
Ricordo che anch'io ho fatto dei test sulle prestazioni e ho concluso che non fa quasi nessuna differenza. Ma il codice con l'unione è più leggibile.
Devo ammettere che sono rimasto deluso perché mi aspettavo di ottenere un notevole guadagno di prestazioni con l'unione.
Non capisco come si possa incorrere nell'ottimizzazione quando una matrice pre-preparata viene riempita di numeri casuali.
Ti ho dato 2 link su hubr sopra, il primo articolo mostra bene come appare un ciclo normale dopo la compilazione
Non sto dicendo che dovete necessariamente arrivare all'ottimizzazione runtime, ma imho, se l'array non cambia, che è essenzialmente uno spazio di memoria costante con una dimensione costante per il ciclo, non è un fatto che l'ottimizzazione non salterà fuori su qualche tipo di processore, e l'ottimizzazione può essere prevista dal compilatore, così come dal processore con una cache
Penso che la linea di fondo sia che non fa quasi nessuna differenza cosa usare - unione o spostamento binario.
Ti ho dato 2 link su hbr sopra, il primo articolo mostra bene come appare un ciclo normale dopo la compilazione
Non sto dicendo che dovete entrare nell'ottimizzazione runtime, ma imho, se l'array non cambia, che è essenzialmente uno spazio di memoria costante con una dimensione costante per il ciclo, non è certo che nessuna ottimizzazione salti fuori
A giudicare dai risultati, non c'è segno di ottimizzazione
I risultati non danno affatto l'impressione di ottimizzazione
sì
L'argomento non riguarda un codice specifico
ma nella metodologia di test, mi attengo ancora a ciò che provo in modo ottimale, e rand() anche se introduce distorsioni, ma è un coefficiente lineare, non proporzionale, cioè la precisione non è molto importante se non c'è differenza di velocità inferiore al 5%, imho
Ciao a tutti!
Ho una domanda, forse agli sviluppatori di MQL5? Forse qualcun altro lo sa... Ci sono piani per integrare il compilatore/editor di codice ME con alcuni ambienti di sviluppo popolari come IDEA o Visual Studio? Meta Editor è un grande dolore per me. Nessun collasso dei blocchi, nessun modello di autosostituzione (ad esempio, quando iniziate a digitare for(...) vi propone immediatamente di sostituire un modello di ciclo e molte altre cose), nessuna evidenziazione di varie parti importanti del codice. E così via. Non sto dicendo che i robot moderni sono complicati, si tratta di grandi progetti e ci sono richieste molto più serie alla gestione del codice e alle capacità di sviluppo del team.
Nessuno scrive più i propri editor e compilatori - tutti li abbandonano e passano a soluzioni già pronte di Microsoft, JetBrains e altri. Tutti gli editor moderni hanno sistemi di plugin personalizzabili che permettono di aggiungere tutto ciò che si vuole. Il compito non è difficile in linea di principio.
Cari signori, c'è qualcuno che può darmi una risposta a questa situazione che non capisco?
E dovresti maltrattare ancora di più i programmatori. Allora riceverai aiuto di sicuro.