2019年02月10日

Modulus 演算の速度を向上する

Webで発見した処理速度向上のためのTipsをヴォリュームコントロール関連の制御回路に導入した。

計算例では、ARM Cortex: 390 cycles が ARM Cortex: 384 cycles に改善されるという微々たるものではあるが、Transition系のヴォリュームは繰り返し演算を行うので、計算量はVoice分だけ加算される。 タイトなリソース情況に於いて、それが少しであってもクロックサイクルを稼ぐのが正道といえる。

Arduino上で C99 fast data types / uint_fast16_t の使用が有効かどうか心許なかったが、とりあえず必要な場所に導入する分に於いて問題は発生しなかった。

WS001645.JPG

uint_fast16_t の導入に併って %(modulus) 演算 C = A % BC = A - B*(A / B) に変換すると、速度の向上が達成できるということで、Transitionコントロール周辺のコードを改変した。

WS001646.JPG

確かに、左手の動きにともなって発生していた妙にザラついた音が消滅して動作がスムーズになった感触があり、速度向上のTips導入に成功した模様。
posted by Yasuski at 20:05| LaVoixski