Errori, bug, domande - pagina 2202

 
Комбинатор:
Cosa c'è di così difficile? Tieni d'occhio il file dei risultati + il nativo Sleep risolve il problema.

A proposito, sì. Più facile )))

 
Un oggetto di sincronizzazione con un overhead maggiore di quello che il file non potrebbe offrire? Stronzate.
 
Alexey Navoykov:

Sì, c'è un tale problema. Quando si passa un puntatore per riferimento a un operatore sovraccaricato si verifica un errore. Questo è apparso nelle ultime build, prima era tutto OK. Ho inviato una richiesta al service-desk per un paio di mesi, ma è silenzioso come al solito. Nessuna risposta o addio.

Questo è particolarmente critico per gli array di puntatori, dato che non c'è altro modo per inviarli, tranne che per riferimento:

Quindi, sono ancora seduto su 1554 build.

Ho affrontato lo stesso con i puntatori nelle ultime build, prima era possibile passare void senza problemi, ora per riferimento non funziona, ho dovuto correggere il codice in diverse delle mie librerie

 
Sergey Dzyublik:
Un oggetto di sincronizzazione con un overhead maggiore di quello che il file non potrebbe offrire? Stronzate.

È necessario scrivere su un file durante i test? Cosa c'è di sbagliato nella memoria?

 
Alexey Navoykov:

Grazie per la dritta su Sleep() del Kernel!

 
Комбинатор:
Perché è così difficile farlo? Tenere d'occhio il file dei risultati + lo Sleep nativo risolve il problema.

MQL Sleep() durante i test salta il tempo virtuale (cioè ticchetta il tempo di 0,6 secondi) mentre il tempo reale salta meno di un millisecondo e il programma esterno esegue il tempo reale.

Ma con Sleep from Kernel ci proverò ).

 
Konstantin:

è necessario scrivere su un file durante i test? cosa c'è di sbagliato nella memoria?

Sì, usare la memoria invece di scrivere su file durante i test farà risparmiare un po' di tempo (non ho stimato esattamente, ma presumo fino a 30 millisecondi al massimo per ciclo), ma è ancora il programma esterno che richiede più tempo.

Quindi per ora la cosa fondamentale è sospendere i test mentre il programma esterno è in esecuzione.

 
romachandr:

Sì, usando la memoria invece di scrivere su file durante i test si risparmia un po' di tempo (non ho stimato esattamente, ma presumo fino a 30 millisecondi al massimo per ciclo), ma la maggior parte del tempo è ancora spesa nell'esecuzione del programma esterno.

Quindi per ora la cosa fondamentale è sospendere i test mentre il programma esterno è in esecuzione.

In generale, la velocità di scrittura su file e memoria differisce di un fattore due.

 
romachandr, mi sembra di aver frainteso il compito. Non uso un tester e non sono sicuro che fermando l'EA si fermi la generazione di tick. Sono incompetente qui.
 

E ora (build 1809) viceversa

https://www.mql5.com/ru/forum/1111/page2181#comment_6765277

La 3a linea (in OnStart) compila, ma la 4a linea no.

In altre parole

typedef int (*fn)( uint ); 
#import "Test1.ex5"
        void f( fn );
#import "Test2.ex5"
        int g(  int ); //(1)
        int g( uint ); //(2)
#import
void OnStart()
{
        f( g ); //Error: 'g' - cannot resolve function address
}

E se si scambiano le linee (1) e (2), va bene. Qual è la differenza?

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.03.09
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы