このアプリケーションには、文字を生成するクラスと、文字を消費する別のクラスがあります。現在の実装では、文字が生成されると動的に割り当てられ ( を使用)、消費されると文字がnew
削除されます( を使用)。delete
これはすべて非常に遅いため、その実装を置き換えてパフォーマンスを向上させる方法を検討しています。
私が必要とするセマンティックは、標準クラスのセマンティックですqueue
: フロントでプッシュ、バックでポップ。デフォルトの実装はdeque
IIRC を使用します。deque
通常、メモリの「ブロック」または「チャンク」を使用して実装されるため、OS メモリ アロケータへの呼び出しがはるかに少なくなり、メモリの使用量がほとんど増えずに大幅なスピードアップが期待できます。
ただし、キューに入れられるデータは文字 (おそらくワイド文字) であるため、標準の入出力ストリーム クラス、つまり文字ストリームを使用することもできますstringstream
。私の知る限り、彼らの行動もキューのようです。
先験的により良い選択はありますか?両方のクラスに同様の割り当てパターンがありますか? 両方のパフォーマンスを試して測定することはできますが、実際には問題ではなく、どちらでも十分です。その場合、どれが最も使いやすく/安全ですか?
二次的な問題は、プロデューサーとコンシューマーの間の同時実行性です。アクセスをシーケンシャル (同じスレッド上) に制限することはできますが、現在のマルチコア ハードウェアでは、スレッド セーフな実装がパフォーマンスの面で有益である可能性があります。
私が飛び込んでコーディングを始める前に、あなたの知恵に感謝します。