4

約 40 の遷移 (4 つのサブステート マシンを含む) を持つルート ステート マシンがあります。すべてうまくいきましたが、トランジションの数を増やし始めると、コンパイル時間が大幅に増加します (大規模なステートマシンの開発は地獄になります)。boost::msm::back::favor_compile_time ポリシーを使用して、サブマシンを複数の翻訳単位に分割しようとしましたが、効果がありません。この問題に関する回避策はありますか?ブースト - 1.53、コンパイラ - MSVC 2012、プロセッサ - Intel i7


Upd: 時間を短縮する最善の方法 - プロジェクトからブースト msm を削除します

4

1 に答える 1

3

「でも効果がない」

TU をまたがって分割することで物事がスピードアップするという考えは /because/ 常に TU を再構築する必要があるとは限らず、必ずしもクリーンな再構築がより高速であるとは限らないということだと思います。

実際、(並列化されていない) ビルドは TU が増えるほど遅くなると予想されます。これは、各 TU のヘッダーに同じコードの 99% が含まれることになるためです。プリコンパイル済みヘッダーは、これをいくらか軽減できます。

この点で、関連するヘッダー (およびプリプロセッサー#define) を stdafx に追加すると役立つ場合があります。

于 2014-04-22T11:32:10.600 に答える