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
Qualcosa che hai dimenticato sulle strutture e le classi (senza nuovo) - entrambe si distinguono sullo stack.
Da non confondere con C++, è più vicino a Sharp
Da non confondere con C++, è più vicino a Sharp
Questa è la vostra fantasia, non la realtà.
Non dovresti provare ciò che non hai testato tu stesso...
La creazione di variabili locali come oggetti di strutture e classi (senza new) avviene sullo stack.
Ho descritto prima comefunzionano gli array in MT5.
Che sfortuna!
1 - Attraverso la creazione di oggetti. 2 - semplicemente attraverso una normale chiamata di funzione. Il primo numero è il tempo in millisecondi, non fate attenzione al secondo.
È quasi 10 volte più veloce (e a volte più di 10 volte più veloce). Che cosa triste... pila... mucchio... ***cha
Beh, perché non prestare attenzione? Fammi indovinare: INT_MAX una volta ha eseguito un'azione tramite la creazione di un oggetto temporaneo, e poi la stessa azione tramite una chiamata di funzione?
Beh, è un risultato atteso, considerando che stiamo ancora ballando intorno alla creazione della classe nel runtime (dovremmo ancora ottenere questo handle che sembra un indice in qualche contenitore).
PS. Dov'è il codice sorgente per il replay?
PPS. Siete sicuri che la funzione sia stata chiamata? Comunque, l'ottimizzatore è anche in questo codice, non il fatto che ci sarà una chiamata di funzione in run-time:
Il fatto che UB sia in mql dimostra questo codice:
Il fatto che mql abbia UB dimostra questo codice:
Hai abilmente avvolto il compilatore intorno al tuo dito:
- il ramo falso viene lanciato perché non c'è una pausa dal ciclo while(1).
- true viene restituito perché le operazioni vengono eseguite su variabili locali senza alcuna interazione con il "mondo esterno" e anche l'esecuzione di questo codice viene gettata via.
Hai abilmente avvolto il compilatore intorno al tuo dito:
- il falso ramo viene lanciato perché non c'è una pausa dal ciclo while(1).
- true viene restituito perché le operazioni vengono eseguite su variabili locali senza alcuna interazione con il "mondo esterno" e anche l'esecuzione di questo codice viene gettata via.
Non sono io - è uno degli esempi su Internet. È lo stesso dei plus.
Perché non prestare attenzione? Fammi indovinare: INT_MAX ha eseguito una volta un'azione tramite la creazione di un oggetto temporaneo e poi la stessa azione tramite una chiamata di funzione?
Bene, questo è un risultato atteso, tenendo conto che stiamo ancora ballando intorno alla creazione della classe nel runtime (dovremmo ottenere questo handle che sembra un indice in qualche contenitore).
PS. Dov'è il codice sorgente per il replay?
PPS. Siete sicuri che la funzione sia stata chiamata? Comunque, l'ottimizzatore è anche in questo codice, non il fatto che ci sarà una chiamata di funzione in run-time:
Il fatto che UB sia in mql dimostra questo codice:
Ti sbagli. Non dovete indovinare qui, ricordatevi solo che ieri, in caso di problemi di memoria, potete guardare tra le citazioni per vedere di cosa tratta la discussione. Perché il risultato è diventato improvvisamente atteso, se prima sosteneva il contrario?
Sì, sono sicuro che la funzione è stata chiamata. E a tutti voi piace sognare che io sia un idiota? Perché la domanda riguarda solo la funzione, e forse anche l'oggetto non è stato creato? O sei così sicuro di sapere come funzionano tutti i compilatori?
Puoi spiegare di cosa si tratta, perché sono un po' tonto, l'ho letto tre volte - ma ancora non l'ho capito...
Guarda le citazioni e vedi di cosa stiamo parlando. Quello che ho citato, e in risposta a quello che stavo ottenendo questa risposta dalla citazione.
Poiché Dimitri era troppo imbarazzato per postare il suo codice, ho dovuto fare 15 minuti di test io stesso.
Ops. Con operazioni identiche la differenza è solo del 30%.
La differenza di runtime persiste anche senza tutto questo casino con variabili statiche e campi. È la differenza in microsecondi, non la percentuale.
Conclusione: il costo della creazione di un oggetto temporaneo sullo stack è abbastanza piccolo sul mio computer non il più veloce da essere circa 30-40 ns/pc (nanosecondo), quindi dovrei farci caso nella maggior parte dei casi.
PS. E ho pensato male degli sviluppatori, ma no, semplicemente non bisogna prendere le persone in parola e controllarle)))
Poiché Dimitri era troppo imbarazzato per postare il suo codice, ho dovuto fare 15 minuti di test io stesso.
Ops. Con operazioni identiche la differenza è solo del 30%.
La differenza di runtime persiste anche senza tutto questo casino con variabili statiche e campi. È la differenza in microsecondi, non la percentuale.
Conclusione: il costo della creazione di un oggetto temporaneo sullo stack è abbastanza piccolo sul mio computer non il più veloce da essere circa 30-40 ns/pc (nanosecondo), quindi dovrei farci caso nella maggior parte dei casi.
PS. E ho pensato male degli sviluppatori, ma no, basta non prendere la parola delle persone e controllarle)))
E anche più fare tutti i tipi di calcoli diversi all'interno, la differenza sarà ancora meno. Comunque, questo test difficilmente può essere chiamato un test di funzionalità identica.
Inoltre, i test stessi non sono identici.