新しいシステムに Windows Server 2008 および .NET 3.5 用のプラットフォーム SDK をインストールしたばかりで、初めて WIN64 用のプロジェクトをコンパイルしようとしました。そのプログラムの Unicode リリース バージョンは、32 ビット用にビルドされており (使用できなくなった Free Toolkit の最適化コンパイラを使用)、約 2.8 MB で提供されます。最新の PSDK の amd64 コンパイラを使用すると、プログラムのサイズは 5 MB を超えます。
私はプログラムのサイズに最も関心があるので、すべて /O1 スイッチを使用して構築されています。64 ビット用にビルドするとプログラムが大きくなると予想していましたが、それほど大きくはありませんでした。サイズは、(一部の) 最適化が利用できない Express バージョンのビルドとより一致しています。
PSDK のコンパイラと MSVC 2008 Professional のコンパイラは、非常に異なるサイズのプログラムを作成しますか? PSDK のコンパイラは同じように最適化しますか、それともまったく最適化しませんか?
洞察をありがとう。
編集:
プログラムとすべてのリンクされたライブラリは、コマンド ラインで同じ makefile.vc を使用してビルドされるため、コンパイル設定の違いはほとんどありません。基本的に、別のコマンド ファイルを使用して、64 ビット コンパイルに適した環境でシェルを起動しました。
アプリケーションのサイズは次のとおりです。
VC++ Toolkit 2003 32 ビット cl.exe: 80x86 の場合は 13.10.3052 2.916.352 プラットフォーム SDK 32 ビット cl.exe: 80x86 の場合は 15.00.30729.01 2.881.536 プラットフォーム SDK 64 ビット cl.exe: x64 の場合は 15.00.21022.08 5.138.432
したがって、64 ビット版は 78% 大きくなります :-(