下記の数千行にもわたる構造体の初期化ですが、リリースバージョンのビルドにおいて、「コード生成しています。」という出力メッセージから30秒くらいかかり、プログラムが作成されるのに時間がかかってしまいます。(デバッグ時は数秒もかからないですが、リリース時に時間がかかります)
膨大なデータを持つプログラムの書き方としては適さないのでしょうが、構造体の初期化の記述をなるべく崩さず、代替となる方法などがあればご教授いただきたいです。
宜しくお願いします。
開発環境はvisual studio 2005、MFCのダイアログベースのアプリケーションです。_T("****")の内容は少ない時で半角20文字程度、多い時で半角100文字以内になります。
補足1:CStringをchar [256]にすると、5秒でビルドは完了しました(ほぼ普通のビルドです)。CStringが以上に初期化を行っているからかもしれませんが、デバッグとビルドでこんなに時間の差がつくのが理解できません。
補足2:CStringとしたまま、リリースの構成プロパティ>C/C++>最適化の欄で、デバッグと同じく最適化、プログラム全体の最適化ともに無効にすると、数秒でビルドは完了するのですが、下記のエラーを吐き出しました。
LINK : /LTCG が指定されましたが、コードの生成は必要ありません。リンク コマンド ラインから /LTCG を削除し、リンカの性能を改善してください。
また、最適化のみ無効にすると、エラーはないですが10秒はかかります(約20秒短縮)、プログラム全体の最適化のみ無効(いいえ)にすると、変化はありませんでした。
static TEST_BUFFER TESTNAME [] = { { _T("****"), _T("****"), _T("****"), _T("****") }, ~(以下数千行続く) }; typedef struct _TEST_BUFFER{ CString buffer1; CString buffer2; CString buffer3; CString buffer4; } TEST_BUFFER;
回答6件
あなたの回答
tips
プレビュー