Curiosità su velocita

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Curiosità su velocita

    Weirstrass non ha detto proprio questo.le allocazioni di memoria sono fatte in zone contigue, il compilatore non ‘perde tempo’.

     E per le ottimizzazioni non credere che le cose stiano come pensi. A volte intere parti di codice sorgente non vengono completamente prese in considerazione dal compilatore perchè ininfluenti. 

  • Re: Curiosità su velocita

    Weristrass dicendo che “Dato che gli array sono contigui, puoi utilizzare anche un solo memset” a fatto capire quello che ho risposto. comunqu lo sapevo che i vettori vengono allocati in zone contigue.

    interessante la questione delle ottimizzazioni avresti qualche link o qualche buon libro da consigliarmi sull'argomento?  

  • Re: Curiosità su velocita

    Weierstrass non (h)a fatto capire che lo fa il compilatore (come dici tu), ma solo che l'allocazione avviene in zone contigue (lo fa il sistema operativo) e quindi è più semplice usare la memset.

    Non esistono libri specifici sull'ottimizzazione, sia perchè è una parte di argomenti più vasti e poi perchè l'ottimizzazione dipende moltissimo dell'implementazione quindi dal tipo e versione di compilatore. 

  • Re: Curiosità su velocita

    Io quello avevo capito.

    ok grazie li potrebbero scrivere però perchè l'argomento è molto interessante suppur molto vasto

  • Re: Curiosità su velocita

    Non sono convinto che non esistano libri sull'argomento. Provo a cercare.

    Di sicuro alcune tecniche semplici sono descritte nei testi di progettazione dei compilatori. Ma ovviamente questa e' solo una prima parte. Poi ci sono tecniche basate sul modello di cpu (a stack, a registri,…), sull'ottimzzazione delle espressioni a partire dall'albero sintattico, all'espansione dei template (per il C++) ecc. 

    non ultimo la sostituzione di chiamata a funzione nella corrispondente funzione assembly, le cosiddette ‘intrinsic functions’ di cui esistono i file header in tutte le distribuzioni C/C++ (come la memset!) e che il compilatore conosce. 

    Questo per dire che ci sono tecniche che dipendono dal paradigma di programmazione e tecniche generali, oltre a tecniche specifiche per la cpu usata. 

    Comunque cercando ‘code optimization techniques’  con Google, qualcosa si trova.

    Quindi, quello che il compilatore genera  NON E' 1:1 con quello che ha scritto il programmatore, a meno che il programmatore non sia MOOOOOOOLTO bravo ;-)

    https://vvyomjjain.github.io/docs/Code%20Optimization%20Techniques.pdf 

Devi accedere o registrarti per scrivere nel forum
19 risposte