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
questo si chiama "loop unrolling" ed è fatto dal compilatore senza OO e template (almeno dovrebbe essere così).
Se guardate il codice intermedio (assembler), ci sono solo N operazioni consecutive invece di un ciclo.
E puoi dirci cosa succede quando una funzione viene chiamata ricorsivamente?
Potete dirmi cosa succede quando una funzione viene chiamata ricorsivamente?
non c'è nessuna chiamata ricorsiva alle funzioni di destinazione :-)
Nell'esempio dato sopra N:=const, la ricorsione avviene solo quando il codice viene generato da un modello e questo viene adattato. Al link, una torsione intelligente è quella di far collassare il ciclo const in una ricorsione template e chiamarlo una parola intelligente
se le macro avessero dei cicli sarebbe scritto così
#for x=0, x<N, x++
print("x=%d",x);
#endfor
e dopo il processore macro si dispiegherebbe in una sequenza di N principi. (cosa che in realtà è avvenuta, solo attraverso le classi template)
Cioè, il trucco funziona solo se N è noto al momento della compilazione
e non c'è nessuna chiamata ricorsiva alle funzioni di destinazione :-)
Nell'esempio dato al link N:=const, la ricorsione è solo alla generazione di codice da un modello e quello è la coda. Al link, una torsione intelligente è quella di far collassare il ciclo const in ricorsione template e chiamarlo una parola intelligente
se le macro avessero dei cicli sarebbe scritto così
#for x=0, x<N, x++
print("x=%d",x);
#endfor
e dopo il processore macro si dispiegherebbe in una sequenza di N stampe. (che in realtà è successo, solo attraverso le classi template)
Quindi il trucco funziona solo se N è noto al momento della compilazione
Non ci crederete, ma so come funzionano i template e che N c'è, e qual è il risultato. E la mia domanda sulla chiamata di funzione ricorsiva era esattamente sulla chiamata di funzione ricorsiva, non su come lì?
Non ci crederete, ma so come funzionano i template, qual è la N e qual è il risultato. E la mia domanda sulla chiamata di funzione ricorsiva era esattamente sulla chiamata di funzione ricorsiva, non su come lì?
è come un esame "obbligo?"? :-) In qualche modo pensavo che questo esempio fosse stato discusso... mi sbagliavo :-)
Se il compilatore può convertire la ricorsione in una coda (o è esplicitamente tale, o gli è stato detto di farlo), allora fisicamente non ci sarà ricorsione - farà un ciclo (switch back) e ogni iterazione "calpesterà" il precedente stack frame.
è una specie di esame "obbligo"? :-) In qualche modo pensavo che questo esempio fosse stato discusso...mi sbagliavo :-)
Se il compilatore può convertire la ricorsione in una ricorsione di coda (o è esplicitamente tale o gli è stato detto di farlo), allora fisicamente non ci sarà ricorsione - farà un ciclo (switch back) e ogni iterazione "calpesterà" lo stack frame precedente.
Cosa c'entra questo con la debolezza? Solo una domanda. Beh, no, quindi no.
Non voglio nemmeno disturbare. Ho fatto strutture semplici.
Per quale motivo l'accesso al primo campo di una struttura semplice dipende dalla sua dimensione - non capisco.
Huh. È banale - il numero di bit per la moltiplicazione è più)))) Assicurarsi che il numero di bit nella rappresentazione binaria della dimensione della struttura fosse lo stesso))) Stupidamente processore, così come un uomo, più lungo per moltiplicare 1111*101 che 1111*10)
Non controllerò, ci sono molti altri compiti. Ma lo trovo difficile da credere.
In ME, lavoro con mqh, premi ALT+N - la vista ad albero nella finestra Navigatore mostra la posizione del file.
Ora voglio fare un incluedere in un file mq5 aperto. Trascino mqh dall'albero a mq5, ma non viene generata nessuna linea include appropriata.
Non controllerò, ci sono molti altri compiti. Ma lo trovo difficile da credere.
È per una piccola struttura.
Questo è per un grande.
VS2019, Debug x64, nel rilascio li ha delineati, ma la velocità è la stessa.
L'unica differenza è nelle istruzioni imul, il terzo operando, in due punti. L'istruzione è proprio questo, calcolare l'offset nell'array, e il terzo operando è ladimensione della struttura in byte.
Quindi, nessun misticismo - leggi della fisica in azione.
Quindi, nessun misticismo - le leggi della fisica sono in azione.
se si scrivono tali classi:
A giudicare dalla tua ricerca, la classe B sarà più lenta da eseguire se usi frequentemente campi struttura nei calcoli?