速度の最適化が重要なプログラムを書いています。速度が 1% 向上するごとに適切です。
頻繁に呼び出される関数では、(小さい) クラス MyClass の固定サイズの配列が必要です。最初は、std::vector を使用しました。全体が小さい (通常は 256 アイテム、クラス サイズは 12 バイト、配列が 16 バイトでアラインされている場合は 3072 バイト)
今、それが起こります:
- スタックに割り当てられた C スタイルの配列 MyClass[256] を使用すると、パフォーマンスが向上します。私の理解では、これはメモリの割り当て/削除が行われず、スタックの割り当てが無料であるためです。
- ::operator new を使用してメモリ割り当てを使用すると、パフォーマンスも向上します。必要のないクラスの初期化をスキップするためです。これに加えて、可能な限り生のメモリの初期化を避けることを好みます。
したがって、スタックへの割り当てと初期化のスキップの両方がさらに高速になるはずです。必要に応じてクラス コンストラクターを書き直すことができますが、その方法がわかりません。
ありがとう、
エティエンヌ