mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
80bab842d7db5aa192b4bae3e81dbdca3f45e576
На каждый сэмпл (576к/с при 576 кГц) цикл делал заметно больше работы, чем требовалось: - IR * SCALE и QR * SCALE вычислялись ТРИЖДЫ — в аргументы FeedDisplaySample, в FBeaconDec.Feed и при записи в FRXAcc; - FeedDisplaySample был невстроенным вызовом метода ради двух записей в буфер, то есть 576 тысяч вызовов в секунду; - FAnalyzerOpen и FBeaconDec перечитывались из полей на каждой итерации, хотя внутри цикла не меняются; - индекс считался умножением Pos := i * 6. Теперь DI/DQ считаются один раз, FeedDisplaySample развёрнут в цикл (и удалён как мёртвый код — других вызывающих не было), флаг анализатора и декодер маяка лежат в локальных, а по данным идёт бегущий указатель. Замерено зонным профайлером в режиме CPU-времени потока: dsp.push_iq avg 12.5 -> 9.3 мкс, доля ядра 3.0% -> 2.3%. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…
…
Languages
Pascal
96.4%
Python
2.9%
Shell
0.6%