От 798 до 16 нс: как оптимизация debounce привела меня в Swift Runtime
The optimization started with a simple change: stop creating a new Task for every value. That alone cut the average call time from 798 to 216 nanoseconds. The author then looked into where the remaining nanoseconds were going, turning the debounce work into a study of Swift Runtime, compiler behavior and the effect of lock placement in memory. The article promises to cover which assumptions held up and what was surprising.
Все началось с простой идеи: перестать создавать новую Task для каждого значения. Уже это сократило среднее время вызова с 798 до 216 нс. Но мне стало интересно, куда уходят оставшиеся наносекунды. Так оптимизация debounce превратилась в исследование Swift Runtime, работы компилятора и влияния расположения блокировки в памяти. В статье расскажу, какие предположения подтвердились, что меня удивило и как в итоге удалось дойти до 16 нс на вызов. Читать далее