Ottimo, fornirà una base per confrontare MQL e C/C++. Ho solo fornito i fatti. E comunque, perché diavolo dovrei essere un Thomas the Believer?
Ci potrebbe essere un po' più di differenza sui nervi, non c'è dubbio.
E, a proposito, mi piacerebbe vedere il tuo "solo i fatti".
Il mio "solo i fatti" è quasi arrivato. "Quasi" - perché ho ripescato le fonti dei miei vecchi test. Li aggiornerò un po' e posterò qui le fonti con i risultati dei test sotto forma di tabella.
joo: E, a proposito, mi piacerebbe vedere il tuo "solo i fatti".
Proprio qui. Vedi il mio secondo post nella pagina.
Tu, a proposito, hai già risposto al mio post con il link. Il codice C di cui sopra può essere facilmente rielaborato in MQL4. Si prega di vedere l'allegato.
Ti ho mandato un link alle foto di questi colossi in un messaggio privato - non per assecondare il ******ismo digitale dei ragazzi delle scuole professionali.
Dai, credimi, la tua foto non cambierà i loro numeri qui neanche di una percentuale. Vai avanti e pubblicalo.
Ma quanto durerà? In un buon modo, dovreste montare un buon raffreddamento per un tale impianto, ad esempio ad acqua, come nella prossima immagine.
joo: Per favore, scrivete i risultati dei test sotto forma di tabella e postateli qui, in modo che nessuno che legge questo thread debba saltare attraverso i link.
Non è un tavolo. Un paio di foto.
Test di programmi parallelpi_x.cpp con diverse impostazioni di compilazione. Quando si confronta con MQL4, solo il 1° risultato è importante: 6,723 secondi. Nessun acceleratore (SSE*, IPP, OML) è usato lì.
Ma se qualcuno volesse masturbarsi e vedere come cambiano i risultati quando gli acceleratori sono abilitati, l'allegato qui sotto è un archivio con gli EA compilati e le librerie parallele richieste. Tutto ciò di cui avete bisogno è metterli tutti in una directory ed eseguirli dalla linea di comando.
Naturalmente, questi risultati non rappresentano alcuna competizione con i mostri dell'array di schede grafiche.
Lo stesso programma riscritto in MQL4:
Il risultato: 22,98 secondi, cioè 3,4 volte di più. Ma non c'è lavoro con gli array lì, e può essere cruciale per noi. In allegato il codice dello script.
C++ è 6 volte più veloce di MQL5 (quando si usano librerie che parallelizzano automaticamente l'esecuzione).
Totale: 20*6=120 volte.
Se usate i calcoli della GPU, sarà ancora più veloce.
TOTALE: 10/120=0,083c.
qualcosa del genere.
Quindi, fanfara! Ci sono quattro diversi compilatori sul ring, in competizione per... per compilare.
Beh, è una battuta, ovviamente. Ma seriamente, sono stati scritti sei test. I risultati sono mostrati nella tabella sottostante. E i commenti sono ancora più bassi. :)
#Test
Descrizione
Nome eseguibile
Risultato del test, s
1
Script Ex5 e libreria Ex5
1 compilatore MLP MQL.ex5
97.2
2
Script Ex5 e libreria dll C++, compilatore MS, tutte le ottimizzazioni disabilitate
2 compilatore MLP MS nonOpt.ex5
42.6
3
Script Ex5 e libreria dll C++, compilatore MS, tutte le ottimizzazioni su
3 MLP MS compilatore Opt.ex5
27.1
4
Script Ex5 e libreria dll C++, compilatore Intel, tutte le ottimizzazioni incluse
4 MLP Intel compiler.ex5
12.5
5
Script Ex4 e libreria Ex4
5 MLP MQL4 compiler.ex4
669.6
6
Script Ex4 e libreria dll C++, compilatore Intel, tutte le ottimizzazioni abilitate
6 MLP MQL4 compilatore Intel.ex4
10.7
Come test di calcolo pesante viene utilizzata una rete neurale a 4 strati MLP 80-100-100-10, progettata come librerie collegabili ex4, ex5, e dll.
Lo vediamo:
- i risultati delle librerie ex5 collegate e delle librerie ex4 differiscono di un fattore 6,8 (1 e 5 test)
- i risultati delle librerie eX5 collegate e le librerie dll del compilatore Intel differiscono di un fattore di 7,8 (1 e 4 test)
- i risultati delle librerie eX4 collegate e le librerie dll del compilatore Intel differiscono di 62,5 volte (test 5 e 6)
Conclusioni:
Naturalmente, stavo un po' esagerando riguardo alla differenza di 20 volte tra MQL4 e MQL5. Una tale differenza si verificherà (ricordo dove quel numero mi è saltato in mente) sotto l'uso intensivo di array bidimensionali, ma sono troppo pigro per modificare i test specificamente per quella caratteristica specifica (inoltre, non corrisponderà ai casi tipici di calcoli "pesanti" - i casi tipici sono presentati nei test), quindi, potete prendere la mia parola per questo o scrivere un test da soli. Pertanto, possiamo parlare di una differenza di velocità di 6,8 volte tra MQL4 e MQL5 e di una differenza di 62,5 volte tra MQL4 e C++.
E sono scoraggiato da questo fatto - ahtung! - Lo script MQL4 che ha chiamato la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.
Chi ne ha bisogno, può usare la griglia (dll compilata di 4 o 6 test - griglia molto veloce), i sorgenti sono allegati. Il numero di neuroni in ogni strato è configurabile. Ma l'ottimizzatore (sia per il 4 che per il 5) non supporta più di 64 parametri, inoltre bisogna usare un grande passo, quindi questo mostro (come nei test, 80-100-100-10, 19210 parametri da ottimizzare!) non può essere addestrato con mezzi standard, bisogna usare algoritmi di ottimizzazione personalizzati. A proposito, per questo (e non solo per questo) ho deciso di fare uno strumento a pagamento (sarà nel negozio, ovviamente), che permetterà di utilizzare sia ottimizzatori personalizzati a 4 che a 5 passi per allenare un numero illimitato di parametri, anche a 0 passi.
È convincente, joo, anche molto convincente. Ma ci sono un paio di punti.
In primo luogo, anche il miglior risultato (opzione 3) è meno di 4 volte migliore dell'opzione 1 quando compilato da MS.
In secondo luogo, non credo che il compilatore all-inclusive di Intel sia migliore di MS per più di un fattore 2. Quindi avete abilitato più ottimizzazioni con Intel.
In ogni caso - impressionante. Aspettando che il tavolo sia riempito fino alla fine.
Ora so a cosa servono questi array di schede video: a fare questi calcoli ad ogni tick!
Secondo, non credo che il compilatore all-inclusive di Intel sia più del doppio di quello di MS. Quindi, Intel ha più ottimizzazioni abilitate.
Quali sono - tutti. Non ha senso usare un compilatore senza usare tutte le sue caratteristiche - i pesci cercano dove c'è il più profondo, mentre il programmatore cerca il miglior compilatore. In questo senso, i compilatori di MQ non sono personalizzati, quindi possiamo supporre che siano ottimizzati.
E questo fatto mi ha scoraggiato, akhtung! - Lo script MQL4 che chiama la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.
Grazie, è molto illustrativo ed esplicativo.
Credo che non dovremmo confrontare tanto le singole percentuali: perché la velocità della CPU (beh, se la prendi in MegaHertz MHz, o GigaHertz, GHz) del computer sospeso ... è zero.
Quando la differenza di velocità è di circa il 10-20%, ha senso essere più preoccupati dell'affidabilità del programma e del suo ambiente e della gestione degli errori. Per esempio, quando si usa la DLL fatta in MSC, si deve prestare attenzione a come è collegata a MSVCRT.DLL e a quale versione, perché deve lavorare nell'ambiente del complicato processo terminal.exe e nell'ambiente del blocco di inizializzazione di MSVCRT.DLL, che può essere diverso da versione a versione, e così via. Per la normale gestione degli errori nella DLL, MetaTrader costruisce (e controlla) una catena di eccezioni, che di per sé rallenta l'intero sistema e chiama la DLL e così via.
A proposito della velocità dei neuroni:
qui c'è un uomo ha tradotto la libreria di reti neurali FANN in OpenCL e sostiene un'accelerazione di 20x sulla scheda media GTX 285:
"Sulla mia attuale GPU (GeForce 9500 GT), sto ottenendo più o meno la stessa velocità tra la versione normale e quella OpenCL. Attualmente ho una GTX 285 in ordine, e dovrebbe essere almeno 10 volte più veloce. Con una GPU moderna, come la GTX 480, mi aspetto che sia almeno 20 volte più veloce del mio Mac Pro Nehalem a 2.26GHz. "
...
"Sì, la nuova scheda (GTX 285) fa girare il kernel circa 20 volte più velocemente".
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Ottimo, fornirà una base per confrontare MQL e C/C++. Ho solo fornito i fatti. E comunque, perché diavolo dovrei essere un Thomas the Believer?
Ci potrebbe essere un po' più di differenza sui nervi, non c'è dubbio.
E, a proposito, mi piacerebbe vedere il tuo "solo i fatti".
Il mio "solo i fatti" è quasi arrivato. "Quasi" - perché ho ripescato le fonti dei miei vecchi test. Li aggiornerò un po' e posterò qui le fonti con i risultati dei test sotto forma di tabella.
Proprio qui. Vedi il mio secondo post nella pagina.
Tu, a proposito, hai già risposto al mio post con il link. Il codice C di cui sopra può essere facilmente rielaborato in MQL4. Si prega di vedere l'allegato.
Proprio qui. Vedi il mio secondo post nella pagina.
A proposito, hai già risposto al mio post con il link. Il codice C di cui sopra è facilmente rielaborato per MQL4. Si prega di vedere l'allegato.
Ti ho mandato un link alle foto di questi colossi in un messaggio privato - non per assecondare il ******ismo digitale dei ragazzi delle scuole professionali.
Dai, credimi, la tua foto non cambierà i loro numeri qui neanche di una percentuale. Vai avanti e pubblicalo.
Ma quanto durerà? In un buon modo, dovreste montare un buon raffreddamento per un tale impianto, ad esempio ad acqua, come nella prossima immagine.
Per favore, scrivete i risultati dei test sotto forma di tabella e postateli qui, in modo che nessuno che legge questo thread debba saltare attraverso i link.
Non è un tavolo. Un paio di foto.
Test di programmi parallelpi_x.cpp con diverse impostazioni di compilazione. Quando si confronta con MQL4, solo il 1° risultato è importante: 6,723 secondi. Nessun acceleratore (SSE*, IPP, OML) è usato lì.
Ma se qualcuno volesse masturbarsi e vedere come cambiano i risultati quando gli acceleratori sono abilitati, l'allegato qui sotto è un archivio con gli EA compilati e le librerie parallele richieste. Tutto ciò di cui avete bisogno è metterli tutti in una directory ed eseguirli dalla linea di comando.
Naturalmente, questi risultati non rappresentano alcuna competizione con i mostri dell'array di schede grafiche.
Lo stesso programma riscritto in MQL4:
Il risultato: 22,98 secondi, cioè 3,4 volte di più. Ma non c'è lavoro con gli array lì, e può essere cruciale per noi. In allegato il codice dello script.
MQL5 è 20 volte più veloce di MQL4.
C++ è 6 volte più veloce di MQL5 (quando si usano librerie che parallelizzano automaticamente l'esecuzione).
Totale: 20*6=120 volte.
Se usate i calcoli della GPU, sarà ancora più veloce.
TOTALE: 10/120=0,083c.
qualcosa del genere.
Quindi, fanfara! Ci sono quattro diversi compilatori sul ring, in competizione per... per compilare.
Beh, è una battuta, ovviamente. Ma seriamente, sono stati scritti sei test. I risultati sono mostrati nella tabella sottostante. E i commenti sono ancora più bassi. :)
Come test di calcolo pesante viene utilizzata una rete neurale a 4 strati MLP 80-100-100-10, progettata come librerie collegabili ex4, ex5, e dll.
Lo vediamo:
- i risultati delle librerie ex5 collegate e delle librerie ex4 differiscono di un fattore 6,8 (1 e 5 test)
- i risultati delle librerie eX5 collegate e le librerie dll del compilatore Intel differiscono di un fattore di 7,8 (1 e 4 test)
- i risultati delle librerie eX4 collegate e le librerie dll del compilatore Intel differiscono di 62,5 volte (test 5 e 6)
Conclusioni:
Naturalmente, stavo un po' esagerando riguardo alla differenza di 20 volte tra MQL4 e MQL5. Una tale differenza si verificherà (ricordo dove quel numero mi è saltato in mente) sotto l'uso intensivo di array bidimensionali, ma sono troppo pigro per modificare i test specificamente per quella caratteristica specifica (inoltre, non corrisponderà ai casi tipici di calcoli "pesanti" - i casi tipici sono presentati nei test), quindi, potete prendere la mia parola per questo o scrivere un test da soli. Pertanto, possiamo parlare di una differenza di velocità di 6,8 volte tra MQL4 e MQL5 e di una differenza di 62,5 volte tra MQL4 e C++.
E sono scoraggiato da questo fatto - ahtung! - Lo script MQL4 che ha chiamato la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.
Chi ne ha bisogno, può usare la griglia (dll compilata di 4 o 6 test - griglia molto veloce), i sorgenti sono allegati. Il numero di neuroni in ogni strato è configurabile. Ma l'ottimizzatore (sia per il 4 che per il 5) non supporta più di 64 parametri, inoltre bisogna usare un grande passo, quindi questo mostro (come nei test, 80-100-100-10, 19210 parametri da ottimizzare!) non può essere addestrato con mezzi standard, bisogna usare algoritmi di ottimizzazione personalizzati. A proposito, per questo (e non solo per questo) ho deciso di fare uno strumento a pagamento (sarà nel negozio, ovviamente), che permetterà di utilizzare sia ottimizzatori personalizzati a 4 che a 5 passi per allenare un numero illimitato di parametri, anche a 0 passi.
È convincente, joo, anche molto convincente. Ma ci sono un paio di punti.
In primo luogo, anche il miglior risultato (opzione 3) è meno di 4 volte migliore dell'opzione 1 quando compilato da MS.
In secondo luogo, non credo che il compilatore all-inclusive di Intel sia migliore di MS per più di un fattore 2. Quindi avete abilitato più ottimizzazioni con Intel.
In ogni caso - impressionante. Aspettando che il tavolo sia riempito fino alla fine.
Ora so a cosa servono questi array di schede video: a fare questi calcoli ad ogni tick!
Secondo, non credo che il compilatore all-inclusive di Intel sia più del doppio di quello di MS. Quindi, Intel ha più ottimizzazioni abilitate.
E questo fatto mi ha scoraggiato, akhtung! - Lo script MQL4 che chiama la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.
Grazie, è molto illustrativo ed esplicativo.
Credo che non dovremmo confrontare tanto le singole percentuali: perché la velocità della CPU (beh, se la prendi in MegaHertz MHz, o GigaHertz, GHz) del computer sospeso ... è zero.
Quando la differenza di velocità è di circa il 10-20%, ha senso essere più preoccupati dell'affidabilità del programma e del suo ambiente e della gestione degli errori. Per esempio, quando si usa la DLL fatta in MSC, si deve prestare attenzione a come è collegata a MSVCRT.DLL e a quale versione, perché deve lavorare nell'ambiente del complicato processo terminal.exe e nell'ambiente del blocco di inizializzazione di MSVCRT.DLL, che può essere diverso da versione a versione, e così via. Per la normale gestione degli errori nella DLL, MetaTrader costruisce (e controlla) una catena di eccezioni, che di per sé rallenta l'intero sistema e chiama la DLL e così via.
A proposito della velocità dei neuroni:
qui c'è un uomo ha tradotto la libreria di reti neurali FANN in OpenCL e sostiene un'accelerazione di 20x sulla scheda media GTX 285:
"Sulla mia attuale GPU (GeForce 9500 GT), sto ottenendo più o meno la stessa velocità tra la versione normale e quella OpenCL. Attualmente ho una GTX 285 in ordine, e dovrebbe essere almeno 10 volte più veloce. Con una GPU moderna, come la GTX 480, mi aspetto che sia almeno 20 volte più veloce del mio Mac Pro Nehalem a 2.26GHz. "
...
"Sì, la nuova scheda (GTX 285) fa girare il kernel circa 20 volte più velocemente".
http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0
http://leenissen.dk/fann/wp/
Quasi tutti ci sono stati, naturalmente.
Per i fanatici di B4 che non visitano mql5.com: OpenCL: Test di implementazione interna in MQL5
Tuttavia, ci siamo quasi.
Sospetto che sarà molto interessante per gli autotrader che usano altre piattaforme.