Citazione:
Originalmente inviato da ElNonino Questa è la spiegazione che da la ST delle migliori prestazioni del C rispetto all' asm dopo aver condotto dei benchmark sulle loro stesse librerie:
"Analysis of the PID timing shows that assembly code is not as fast as C code. The compiler is more efficient in accessing variables than manual optimization (offset computation and data placement in literal pool)."
La descrizione delle librerie, i test ed altro sono contenuti nel UM0585 User manual reperibile sul sito ST, precisamente: www.st.com/stonline/books/pdf/docs/14988.pdf
Non essendo io un mostro del' assembler (e nemmeno del C) mi fido di chi ne sa più di me ed anche delle mie verifiche sperimentali.
In alcuni casi, anche con i PIC, è piuttosto difficile ottimizzare veramente al 100% calcoli complessi in ASM, è possibile che un buon compilatore adotti strategie migliori.  |
Ho letto (velocemente) l'articolo; quello che dici è corretto.
Cioè la funzione PID in ASM è più lenta di quella scritta in C.
Perché il compilatore è in grado di ottimizzare il codice meglio di quanto riesce a fare un umano con l'assembler. Mi chiedo allora perché tenere entrambe le versioni; probabilmente la risposta la potrei trovare leggendo un po' di più, ma non ho tempo
Alla fine stiamo confrontando l'assembler generato da un compilatore e l'assembler generato da un umano. Pare vinca il compilatore
Da come scrivevi mi era sembrato di capire che il C è più veloce dell'ASM, che non ha molto senso...