最新のDXライブラリを使用したプログラムのバイナリがかなり大きくなった(4MBくらい)ので、
stripでファイルサイズを小さくしました。
それでも3.5MBくらいあります。前のDXライブラリだと2MBくらいだった気がするんだが?気のせいかな?
さて、ついでにstripの前後でどのくらいバイナリのサイズが変わるかを調べてみました。
用意したのは、単純なHello Worldのプログラムです。
C言語(hwtest.c)
C++(hwtest2.cpp)
これをコンパイルすると、
C言語:47KB C++:1414KB となりました。
Hello Worldだけで1MBを超えるなんて、大きすぎます。もちろん、DXライブラリなんて使っていません。
でも、まだstripしていないからかもしれません。strip -pをかけてみます。(-pはタイムスタンプを維持するオプション)
結果は・・・
C言語:8KB C++:642KB です。
stripしてもC++は大きすぎます。しかもやっていることはC言語と同じHello Worldを表示するだけです。
逆に、C言語のバイナリはけっこう小さくなりました。
結論:C言語でできることはC言語でやりましょう。
実験環境
Windows Vista SP2 32ビット
gcc version 4.7.0 (GCC)
コンパイルオプション
C言語: -finput-charset=cp932 -fexec-charset=cp932 -static -std=c99
C++: -finput-charset=cp932 -fexec-charset=cp932 -static
ちなみに、-staticを外すとバイナリがMinGW付属のDLLに依存してしまうので、外せません。
僕のC++バイナリは大きい
Re: 僕のC++バイナリは大きい
そりゃgccだし。しかも-staticオプションで本来ならDLLから読みだすものも取り込んでいるから大きくなって当然かと思いますが…
まあでもCかC++かで結構差があるんですねえ。。
同じコードをVS2005でもコンパイルしてみました。
上の方がC言語、下の方がC++言語。
両方とも10k超えません(オプションはデフォルトです)。
このへんやっぱMicrosoft提供だけあるなと にやり
まあでもCかC++かで結構差があるんですねえ。。
同じコードをVS2005でもコンパイルしてみました。
上の方がC言語、下の方がC++言語。
► スポイラーを表示
このへんやっぱMicrosoft提供だけあるなと にやり
最後に編集したユーザー へにっくす on 2012年8月04日(土) 21:46 [ 編集 1 回目 ]