私はこれがパーティーに非常に遅れることを知っていますが、時間の変更と答えはとどまります。C ++ 11には大幅な変更があり、その多くはC ++と標準ライブラリのパフォーマンスを向上させるためです。STLやBoostを使用していない人は、新しい標準に追いついていない傾向があり、重要な改善を欠いているホームスピンソリューションはもちろん、常にそうとは限りません。
EAでの短い時間を除き、90年代半ばから今日までのすべてのプロジェクトでSTLを使用しました。反STL側には、それを使用しないというわずかに合理的な理由があると思います。それらはほとんどなくなりました。カスタムアロケーターは1つのソリューションであり、リザーブを使用することは別であり、値で物を渡すことは3番目ですが、これらは非常に単純であり、プログラマーはこれらを知っている必要があります。さらに重要なことは、アルゴリズムの使用です。コンパイラの作成者は、for_each()の機能を正確に把握しており、コードを最適化できます。これは、ホームロールループでは発生しません。constオブジェクトのfor_each()はさらに優れています。Microsoftは、シリアル化を含む多くの方法でfor_eachを最適化します。また、parallel_for_each()があるAMPライブラリもあります。機会があれば、これについてコンパイラエンジニアに相談してください。コンソールコンパイラは使用されるものを最適化するため、鶏と卵の問題のビット。マイクロソフトはC ++ 11で非常に重くなり、次のXBoxも変わりません。PS4についてはわかりませんが、まだ入手していません。
カスタムアロケーターは、メモリの問題を処理する1つの方法ですが、別の(しばしば見落とされがちな)オプションは、クラスベースの新規および削除を使用することです。これにより、パフォーマンスが大幅に向上します。
BoostとSTLが問題を解決するという狭い視野を持っているという概念は、純粋な狂気です。STLとBoostには、特性とポリシーを介してカスタマイズ可能なものがいくつあるのか、驚きました。例として、大文字と小文字を区別しない文字列比較を探します。
長いリンク時間とコードの膨張に関して、新しい外部テンプレートがこれに役立つはずです。一般に、長いコンパイル時間は過剰な結合とpchの誤用に起因することがわかります。
ホームスパンでSTLを使用する最も説得力のある理由は、STLを支援できる何百万人もの人々がいることです。いつものように、時期尚早に最適化しないで、テスト、テスト、テストしてください。