2011-07-03 13 views
7

MS Visual Studio Express 2010'da ilk 'demoscene' uygulamasını yazmaya çalışıyorum. Aniden fark ettim ki ikili kodum 16kb'den tam 100kb'ye çıktı. boyutlandırılmış sürüm sürümü için optimize edilmiştir. Hedef bedenim 64k. Bir şekilde "göz atmak" için ikili bir yol var mı, hangi yöntemlerin çok fazla yer tükettiğini ve yeniden yazmam gereken? İkilliğimin neyi içerdiğini bilmek istiyorum.'Exe' boyutunun hangi yöntemle artırılacağı nasıl hesaplanır?

Web'de bulduğumdan, VS2010, demosenler için en iyi derleyici değil, ancak hala .exe dosyamda neler olduğunu anlamak istiyorum.

cevap

5

MSVC'nin sizin için bir harita dosyası oluşturması gerektiğini düşünüyorum. Bu, yürütülebilir dosyanızdaki farklı işlevlerin çoğunun adreslerini size söyleyen bir dosyadır. Ardışık adresler arasındaki fark, fonksiyonun ne kadar alan aldığını söylemelidir. Bir harita dosyası oluşturmak için /MAP linker seçeneğini ekleyin. Daha fazla bilgi için, bkz .: http://msdn.microsoft.com/en-us/library/k7xkk3e2(v=VS.100).aspx

+0

Çok teşekkürler, bu mükemmel çalıştı. – Andrew

+0

Oluşturulan harita dosyalarını ayrıştırmak için harika bir araç bulundu [bağlantı] (http://code.google.com/p/mapfile/). Birisi de yararlı bulabilir. – Andrew

+0

Harika! Bunun senin için çalıştığına sevindim. –

2

Çok sayıda gereksiz dosyayı yürütülebilir dosyadan kapatabilir ve mew gibi yardımcı programlarla sıkıştırabilirsiniz.

+0

Çok teşekkürler, bu yardımcı programı deneyeceğim. – Andrew

0

Artışa neyin neden olduğunu görmek için sürümünüzün kontol sistemini kullanın. İleriye dönük olarak, gece yapımları sırasında inşa edilen exe boyutunu kaydediniz. Ve derleyici ayarları ile minimum boyut için optimize edebilirsiniz unutmayın.

2

ben (değil demoscene tip şeyler için olsa da) çalıştırılabilir boyutlarını incelemek için bu yararlı bulduk: http://aras-p.info/projSizer.html

şunu söyleyeceğim: Eğer hiç standart kütüphane kullanıyorsanız ardından hemen durdurun. Bu büyük bir kod bloater. Örneğin, her bir benzersiz kullanım std::sort, yaklaşık 5 KB ekler ve birçok standart kapsayıcı için benzer numaralar vardır (tabiki, kullandığınız işlevlere bağlıdır, ancak genelde çok sayıda kod ekler).

Ayrıca, demo sahnesine katılmıyorum, ancak kullanıcıların çalıştırılabilirlerini sıkıştırmak için Crinkler kullandıklarına inanıyorum.

+0

VS2010'dan pdbs ile çalışmadığı anlaşılıyor, ancak yine de teşekkürler. VS2008'e geçersem, bu program gerçekten yardımcı olacak. – Andrew

İlgili konular