私は MATLABパフォーマンスの向上に関するMathWorksに関するこの記事 を読んでいましたが、最初の提案の1つは配列を事前に割り当てることであり、これは理にかなっています。ただし、Cell配列(つまり、異なる未知のデータ型を含む可能性がある配列)を事前に割り当てると、パフォーマンスが向上することも述べています。
しかし、データ型が不明であり、セル配列の形状を知っていても必要な連続メモリがどれほど必要かわからないため、メモリを事前に割り当てることができないため、パフォーマンスをどのように向上させるのでしょうか。それでは、どのようにしてパフォーマンスが向上するのでしょうか。
この質問がプログラマよりStackOverflowに適していることをお詫び申し上げますが、特定の問題についての質問ではないため、ここでより適切だと思いました。間違っている場合はお知らせください。
どんな説明でも大歓迎です:)
MATLABのメモリ処理の詳細がわからないので、これは単なる説明ですguess:セル配列は、配列自体に参照のみが含まれるように実装されています(ポインタ) ヒープ に実際に存在するセルへのポインタ。あなたが書いたように、それらのサイズは不明であるため、実際のセルに事前にメモリを割り当てることはできません。ただし、ポインタのサイズがわかっているため、ポインタ配列自体を事前に割り当てることができます。
考えてみると、要素サイズが一定ではない配列を実装するのは非常に困難です。各要素のサイズが異なる可能性がある場合、X [1234]がメモリのどこに存在するかをどのようにして知るのでしょうか。したがって、間接層(実際のデータを指す定数サイズのポインタを格納する)は非常に便利です。代替案は、リンクされたリストの一種であり、異なる種類のトレードオフです。