perchè questo codice è lento? 75 microsecondi?
byte b = c[a];
dove c è un array di 92 byte e a una variabile byte?
c’è un metodo più veloce?
perchè questo codice è lento? 75 microsecondi?
byte b = c[a];
dove c è un array di 92 byte e a una variabile byte?
c’è un metodo più veloce?
Hai provato a separare le cose? byte b; b = c[a];
Alle volte i compilatori si "intrippano" quando trovano cose un po' strane.
si si, sempre= sto analizzando un codice lento e ho notato un'altra stranezza:
long a = (600000/periodo)-10;
//12 micros
r=periodo/360;
//36 micros
non capisco la seconda è più facile eppure diventa più lunga.
credo dipenda da qualche trucco nell’algebra dei bit
conoscete qualche controtrucco per fregarlo?
non credo, si tratta di un'ottimizzazione a livello di compilatore, o esiste un parametro per dirgli di non ottimizzare o modifichi il compilatore
gcc accetta opzioni per ottimizzare il codice per velocità, compattezza o compatibilità. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Di solito io ho sempre impostato su "-o2", non so l'IDE di Arduino come lo gestisce.