クイズが出ていたのですが、確認してみました。
【 append クイズ🥳】
— michio inoue l MATLAB の中の人 (@michio_MWJ) October 29, 2021
配列に要素を追加。Case 1, Case 2 でどちらが速く処理が終わるでしょう!?
手元の環境では 100-200 倍程度の違いが・・😯
事前に配列を確保するのがもちろん一番速いですが、確保できない場合も少なくないはず。そんな時皆さんどちらでやることが多いでしょう? pic.twitter.com/UzYOrw6LUJ
実際やってみると上から
経過時間は 1.251780 秒です。 経過時間は 0.008412 秒です。 経過時間は 0.001104 秒です。
安直に配列で連結すると、要素数を確保しておくより3桁(1000倍)遅くなりますね。
最後のインデックスを1ずつ増やす方法は、要素数を最初に確保する方法の10倍程度で済みます。
可能であれば、要素数を最初の定義しておくのが良いですね。安直にappendを乱発しないのが良いです。
要素数を確保出来ない場合は、一つずつインクリメントする方法が使えるなら使うし、使えない場合は配列の連結を使う、という感じでしょうかね。