ここで重要なのはもちろん、「押し付けがましい」ソリューションを使用する場合、つまり、リンクされたリストのリンクを各ノード内に保存する場合と、別のノード構造を保持する別の場所へのポインタ/参照を保持する場合とでは異なります。データ自体には、いくらかのパフォーマンスへの影響があります [そして、それは双方向で機能します - 侵入型のソリューションが常に最善であるとは限りません]。
人々が誤解する典型的なケースは、割り当てられたオブジェクトを何らかのコンテナーに格納することと、それをオブジェクトのコピーをコンテナーに格納するソリューションと比較する場合です。そのコンテナが再割り当てによって「成長」する必要がある場合、パフォーマンスの問題が発生します。しかし、それは単に「保存するものを選択するのが間違っている」または「このタイプのオブジェクトストレージのコンテナの種類が間違っている」だけです。
ほとんどの場合、何かを行う方法 (たとえば、ツリーかベクターか) を実装すると、100 倍の改善が得られます。このタイプのストレージに固有のものを書くと、元のコードがどれだけうまく書かれているか、最適化されたコードがどれだけうまく書かれているかに応じて、5 ~ 20% の改善が得られます。ゲームのレンダリング ループの内部の詳細、または OS カーネルのシェデュラーまたはメモリ割り当てコードの一部ではないと仮定すると、5% は持つ価値がなく、大多数のコードでは、おそらく 20% の改善が必要です。どちらもあまり価値がありません[システム機能の一部について-コンテナに物を保存している場合、単にコンテナを保存してコンテナのコンテンツを行ったり来たりするだけでなく、それ以上のことを行うことを願っていますよね?]
コードの最適化に時間を費やす前に、コードがどこで時間を費やしているかを適切に分析する必要があります。それからあなたはそれをより良くするために攻撃することができます. そのための最初のステップは、「ここでのアルゴリズムの動作は何ですか?」を調べることです。はるかに高速な別の方法を使用できる場合、何かの並べ替えに O(2^n) を費やしていますか? リスト、スタック、またはキューがおそらくより良い選択である場合、大きな配列への挿入/削除に時間を費やしていますか? 少数の大きなブロックを書き込むことができるのに、小さなデータのチャンクをディスクに書き込んでいますか?
これらの種類の質問は、実際の違いを生む 5、10、100 倍の改善を提供します。もちろん、何かの 5% を削ることは価値があります。場合によっては、0.5% オフにすることでゲームが 100 fps ではなく 200 fps で実行される場合、0.5% オフにする価値があります。しかし、一般的に、速度が少なくとも 2 倍にならない場合は、他の場所で時間を費やす必要があります。