Errori, bug, domande - pagina 2749

 
Roman:

Nella pagina precedente fxsaber ha dato le misure.
Ho spiegato perché questo è il caso.
Alloca sempre la memoria, staticamente o dinamicamente.

Che tipo di misure? Se intendi un grande tavolo, allora solo la parte sinistra è visibile sullo schermo, il resto è tagliato, quindi non so cosa ci sia.

Ma a giudicare dal codice, se questa macro viene confrontata

GetCurrentTick2(Tick, !i)

Ho solo una chiamata di funzione ogni 100 iterazioni, e la prima macro ha una chiamata ad ogni iterazione, quindi non ha senso.

 
Alexey Navoykov:

Che tipo di misure? Se intendi la grande tabella, solo la parte sinistra è visibile sullo schermo, il resto è tagliato, quindi non so cosa ci sia.

Ma a giudicare dal codice, se questa macro viene confrontata

E nella prima macro, c'è solo una chiamata di funzione ogni 100 iterazioni. Quindi, questo non ha senso.

Il compilatore non è onnipotente, a volte devi partecipare e aiutarlo con il codice giusto ))

 
Sergey Dzyublik:
Bug nel debugger ME (build 2370) - StepInto (F11) e i punti di interruzione impostati manualmente non funzionano.
Il problema è che se l'azione StepOver (F10) è applicata ad una chiamata di funzione almeno una volta, non c'è modo di eseguire il debug di questa funzione in seguito.

Passi di replay:
1) Eseguire il codice in modalità debug;
2) Dopo l'attivazione di un breakpoint, eseguire StepOver (F10) due volte;

Tutto - ora non c'è modo di "entrare" nella funzioneIncrement, tutti i breakpoint impostati manualmente non vengono attivati, e invece dell'operazione StepInto (F11), viene effettivamente eseguito StepOver (F10).


Grazie per il post.

Corretto da

 
Roman:

Il compilatore non è onnipotente, a volte bisogna intervenire ))

Mi hai assicurato che il tuo costrutto è più veloce, ma non lo è. È solo 100 volte meno probabile che venga chiamato in quel codice.
 
Alexey Navoykov:

Nella prima macro, c'è solo una chiamata di funzione ogni 100 iterazioni, quindi questo non ha senso.

Il test, se non per la precisione, di cui qui non abbiamo bisogno, è più o meno normale.
Rispetto a: chiamare 100 volte SymbolInfoTick VS chiamare 1 volta SymbolInfoTick e restituire 99 volte la cache "manuale".
Mostra come non sia conveniente usare la funzione standard SymbolInfoTick per il simbolo corrente quando la funzione sarà chiamata più di una volta in un singolo passaggio.
Come possibile soluzione al problema, gli sviluppatori suggeriscono di introdurre una variabile predefinita:

const MqlTick _Tick; // Текущий _Symbol-тик.



È solo chefxsaber ha sparpagliato tutto sui post senza spiegare assolutamente nulla, è un inferno di cose da fare.

 
Alexey Navoykov:

Nella prima macro, c'è solo una chiamata di funzione ogni 100 iterazioni, quindi questo non ha senso.

Il suo esempio è un uso specifico dei dati bid/ask in diverse parti del programma MQL, più spesso si accede a SymbolInfoTick(), più bassa è la performance del test

Ho trovato alcuni problemi di prestazioni con TimeCurrent(), l'ho provato in diversi modi, poi l'ho scartato,

Raramente uso la visibilità delle variabili globali, ma per far "volare" tutto nel tester, lo scrivo così:

MqlTick Tick = {0};
#define  Ask Tick.ask
#define  Bid Tick.bid
#define  TimeCurrent_ Tick.time
//+------------------------------------------------------------------+
void OnTick()
{
   SymbolInfoTick(_Symbol,Tick);
  ....
}
 
Alexey Navoykov:
Mi hai assicurato che il tuo progetto è più veloce, e non è più veloce, è solo 100 volte meno probabile che venga chiamato in quel codice.

Questo non è il mio progetto, e come ho capito da quell'esempio, le macro sono state chiamate una per una per il test.
E il rapporto del passaggio è mostrato insieme, anche se è tagliato, si può vedere il tempo di esecuzione.

 
Sergey Dzyublik:

Il test, se non vi interessa la precisione, di cui non avete bisogno, è più o meno normale.
Confronto: chiamare 100 volte SymbolInfoTick VS chiamare 1 volta SymbolInfoTick e restituire 99 volte la cache "manuale".

Sì, capisco la cache. È solo che Roman qui stava sfregando qualcosa sull'allocazione della memoria... Sembra che tu avessi ragione sul troll)

 
Alexey Navoykov:

So della cache. È solo che Roman qui stava sfregando qualcosa sull'allocazione della memoria... Sembra che tu avessi ragione sul troll )

Dove pensate che sia allocata la cache? Stupidi.

 
Sergey Dzyublik:

Il test, se non vi interessa la precisione, di cui non avete bisogno, è più o meno normale.
Confronto: chiamare 100 volte SymbolInfoTick VS chiamare 1 volta SymbolInfoTick e restituire 99 volte la cache "manuale".
Mostra come non sia conveniente usare la funzione standard SymbolInfoTick per il simbolo corrente quando la funzione sarà chiamata più di una volta in un singolo passaggio.
Come possibile soluzione al problema, gli sviluppatori sono incoraggiati a introdurre una variabile predefinita:

Hai capito il mio punto di vista al 100%.

Il motivo è chefxsaber aveva sparso tutto nei suoi post senza spiegarlo ed è difficile da capire.

Mi dispiace, non lo formulo bene.