22-05-2020, 13:37
DSP jest proste.... do momentu w którym zaczniesz wgryzać się w teorię 
Po czystości kodu Guido widać że nie ma czasu
W tym kodzie jest jeszcze sporo miejsca na optymalizację (niekoniecznie pod kątem efektów, choć może też).
Po szukaniu w necie ile czasu zajmują atmedze różne operacje okazało się ze dzielenie 32bitowe robi się prawie tak samo wolno jak dzielenie przez float'a i duużo wolniej niż mnożenie.
W swoim AGC na atmedze (w burzeninie) używałem podstawy będącej wielokrotnością dwójki, dzięki temu wszystkie dzielenia dawało się zamienić na przesunięcie binarne. I tak np:
to to samo co:
tylko pomnożone o 1024;
to przy samplowaniu 9600Hz jest dolnoprzepustowy filtr eksponencjalny o f=50Hz, na atmedze wykonuje się nieco ponad mikrosekundę

Po czystości kodu Guido widać że nie ma czasu
W tym kodzie jest jeszcze sporo miejsca na optymalizację (niekoniecznie pod kątem efektów, choć może też).Po szukaniu w necie ile czasu zajmują atmedze różne operacje okazało się ze dzielenie 32bitowe robi się prawie tak samo wolno jak dzielenie przez float'a i duużo wolniej niż mnożenie.
W swoim AGC na atmedze (w burzeninie) używałem podstawy będącej wielokrotnością dwójki, dzięki temu wszystkie dzielenia dawało się zamienić na przesunięcie binarne. I tak np:
Kod:
avg_bias = ((992*avg_bias)>>10) + (x<<5);Kod:
avg_bias = 0,96* avg_bias + 0,125*x;tylko pomnożone o 1024;
to przy samplowaniu 9600Hz jest dolnoprzepustowy filtr eksponencjalny o f=50Hz, na atmedze wykonuje się nieco ponad mikrosekundę
Nie rozumiem - nie robię. Chyba że robię żeby zrozumieć.

