A więc napisałem szybki benchmark, wrzucam dla pokoleń
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wartość preskalera musicie dobierać ręcznie do swoich potrzeb i do tego, jak Wasz kod wykonuje się szybko, im mniejszy preskaler tym większa dokładność pomiaru, wynik nie jest w żadnych jednostkach typu us czy ms, dla ciekawskich można policzyć uwzględniając prędkość zegara. Ja w swoim 'teście' musiałem preskaler ustawić na 0 ale przy 4 Mhz praktycznie każda jedna instrukcja zwiększała mi wartość TCNT0 o 4

Mój test polegał na sprawdzeniu czasu wykonywania się 8 razy tej samej instrukcji sprawdzającej z przesuwaniem. Sprawdziłem while, for, oraz (uwaga!) 8 ifów wpisanych ręcznie.
while - 159
for - 149
8x if - 93
Jasną sprawą jest fakt, że ostatnia opcja nie jest optymalna jeśli chodzi o zapis oraz pojemność zajętego flasha, lecz jest to mój pierwszy projekt, w którym szybkość wykonywania kodu jest dla mnie ważniejsza, niż utrata 80 bajtów, jak to zwykle jest odwrotnie szukając oszczędności na każdym bajcie.
Aha i nie lekceważcie porad bardziej doświadczonych by stosować zmienne 8 bitowe tam, gdzie jest to wystarczające, bowiem zarezerwowanie pamięci dla zmiennej 16 bitowej zajmuje więcej czasu procesorka

Zachęcam Was do pomiarów różnych fragmentów swoich kodów i ich optymalizacje, jeśli macie efekt pływania np. podczas wyświetlania jakichś skomplikowanych siatek z ledami
