2019年06月10日

Envelopeの選択メソッド

ChoppingArpeggiatorの分岐処理を、総当りを強いられるif構文から、対象を選別後にバッサリとbrakeするswitch構文に切替えて処理時間の短縮を図ってみたが、効果はイマイチだった模様。

WS001862.JPG

条件分岐にOR(||)を使うと、処理に時間を取られることが実証されているが、これをswitchに書き換えると、記述が冗長になる一方、総当りで参照しない分だけ処理の行程が単純化される。

オプティマイズをFastestに変更した場合、コンパイル時間が1/4以下になったが、動作の違いは全く感じなかった。

WS001863.JPG

期待していた割にリザルトはイマイチどころか、96kHzのオーディオクロックを選択した場合には、ChoppingArpeggiatorが動作不能に陥っている。

Fastest + LTO + PureCodeに設定を変えて比較実験を行ったが、結果はFastest + LTOの勝ち。 Fastest + LTO + Purecord はメモリーの使用量が増えるうえに、劇的に処理が遅くなって96kHzでの運用が全く行えず、この選択肢は論外だった。

void の前に FASTRUN を記述すると若干のスピードアップが望めるということだったが、大容量のキャッシュを持つTeensy3.6ではほぼ効果は無かった模様。

結局、オプティマイゼーションのリザルトは Fastest + LTO が最速で、96kHz運用のベンチマークを難なくこなせた。 データの使用量はFastestよりも若干増えるようだ。

WS001864.JPG

Fastest + Purecord は未だ試していないが、過去の経験からあまり御利益があるようには思えず。 暇な時に実験を行ってみるか。

Pitchのオフセット固定に関しては、今のところ破綻は発生していない。
posted by Yasuski at 01:49| LaVoixski