Errori, bug, domande - pagina 1337

 
Vladimir Pastushak:

Gli sviluppatori non sono privi di umorismo.

Mi suona come un download, e una specie di albero "Download" che oscilla a destra o a sinistra.

Se "dondola", si potrebbe anche paragonarlo a un albero: "destra/sinistra" - si ha anche umorismo (confondere "destra/sinistra")
 
Artyom Trishkin:
Se "ondeggia", avresti potuto paragonarlo a un albero: "destra/sinistra" - sei anche spiritoso (fuso "destra/sinistra")

"ondeggiare" nella barca,

E la cosa (fusa a destra/sinistra) non è colpa mia, è di Firefox.

 
Se compilate i file in ME, mentendo nella cartella Projects, i file compilati vengono creati nelle cartelle appropriate Experts, Indicators, Scripts. Ma se compilo con un compilatore separato, questo non succede - i file compilati vengono creati nella cartella con il sorgente. Deve essere così o bisogna usare i tasti appropriati?
 

Sui personaggi BR-8.15 e BR-10.15 glitch, altri periodi BR vanno bene.

costruire 1150 apertura reale win7 x64 max

File video .mp4 nel trailer.

+ sul periodo M1 (per esempio)

Se si preme il pulsante "autoscorrimento del grafico alla fine con l'arrivo di nuovi tick" - il grafico viene spostato all'inizio

Poi, se si preme il tasto "END", il grafico si sposta alla fine per un secondo e di nuovo - si sposta all'inizio.

File:
br-bag.zip  7609 kb
br-bag2.zip  3720 kb
 
Alexey Navoykov:

Non ci avevo fatto molto caso prima, ma ora, quando lavoro con grandi array di oggetti di classe, ho notato un consumo di memoria troppo grande. Ho controllato con sizeof() e una classe assolutamente vuota prende 16 byte. E considerando che le classi qui sono gestite, aggiungiamo altri 8 byte per puntatore. Il totale è 24 byte. È troppo costoso.

Ho guardato la documentazione e ho visto quello che ho trovato lì:

La domanda è perché le classi semplici (quelle che non partecipano all'ereditarietà) hanno bisogno della tabella delle funzioni virtuali, dato che tutto è noto su queste classi in fase di compilazione.

Si scopreche i metodi in essi sono chiamati nello stesso modo dei metodi virtuali, cioè c'è un ulteriore reindirizzamento dell'accesso attraverso la tabella. E dov'è la decantata ottimizzazione del compilatore? Come possiamo affermare dopo questo qualche confronto di prestazioni con C++?

L'ipotesi evidenziata non è corretta, solo i metodi virtuali sono chiamati attraverso la tabella e la mia affermazione non è solo vera per il compilatore MQL.
Inoltre, MQL, alcune chiamate virtuali sono eseguite come normali chiamate di funzione, non attraverso la tabella.
Come ha scritto Renat, le classi in MQL hanno davvero sempre una tabella virtuale, che prende 8 byte + 8 byte di metainformazioni.
 
Vladimir Pastushak:

Gli sviluppatori non sono privi di umorismo.

Mi suona come un download, e una specie di albero "Download" che oscilla a destra o a sinistra.

Grazie, corretto in "Download".
 
Ilyas:
L'ipotesi evidenziata non è corretta, solo i metodi virtuali sono chiamati attraverso la tabella e la mia affermazione non è solo vera per il compilatore MQL.
Inoltre, MQL, alcune chiamate virtuali sono fatte come normali chiamate di funzione, non tramite tabella.
Come ha scritto Renat, le classi in MQL hanno sempre una tabella virtuale che prende 8 byte + 8 byte di metainformazioni.
Comunque, potresti chiarire perché una classe semplice, che non eredita da nessuno e quindi non partecipa alla virtualizzazione, ha bisogno di una tabella? Renat ha parlato di distruttori virtuali, ma nel nostro caso non c'è niente da virtualizzare. C'è solo un distruttore, quindi può essere anche inlined, no? Questo lascia solo 8 byte di metadati.
 
Alexey Navoykov:
Grazie per la risposta, ma potresti spiegare perché una classe semplice, che non è ereditata da nessuno e quindi non partecipa alla virtualizzazione, ha bisogno di una tabella? Renat ha parlato di distruttori virtuali, ma in questo caso non c'è niente da virtualizzare. C'è solo un distruttore, quindi può essere anche inlined, no, lasciando così solo 8 byte di metadati.
Se una classe non è ereditata, il suo distruttore è chiamato come una normale funzione non virtuale ed è inlineato se soddisfa i criteri di inline.

Il sistema di runtime (ambiente di programma MQL) è costruito con il presupposto che una classe occupi almeno 16 byte.
 
Se compilate i file in ME, mentendo nella cartella Projects, i file compilati vengono creati nelle cartelle appropriate Experts, Indicators, Scripts. Ma se compilo con un compilatore separato, questo non accade - i file compilati vengono creati nella cartella con il sorgente. Deve essere così o bisogna usare i tasti appropriati?
 

costruire 854 vin 10 64 x

Quando si testano gli EA con la visualizzazione, quando si cerca di chiudere qualsiasi altra finestra aperta in precedenza che la finestra di lavoro corrente con il test, il test viene interrotto...

Chiuso tramite il pulsante centrale del mouse e il menu di contesto ...