daha önce bu mesajı yazıp, sonra C=++ altında olduğunu görünce yanlış anladığımı sanıp silmiştim. meğer doğru anlamışım, söz konusu olan C++ imiş
EXE boyutu küçültme yöntemleri
1) Kullanacağın librarylerin headerlarını include etme, onun yerine header dosyalarından yalnızca gerekli kısımları kopyala. Kolay iş değildir ancak iyi bir size optimizasyonudur.
2) Mecbur değilsen C++ yerine Ansi C standartlarına bağlı kal. Özellikle C++ kütüphaneleri yerine standart C libraryleri kullanman faydalı olacaktır. (iostream yerine stdio gibi)
3) EXE kullanmak zorunda değilsin. COM dosyaları erişebileceğin en küçük boyutlu dosyalardır, headerları yoktur v.s. EXE2COM türü utilityler var, EXE'lerine yer kaplayan headerlarını uçuruyorlar. Bunları kullanarak 256 byte'a bile sığdırabilirsin kodunu.
Örnekler:
1) 7D3'de Gökhan San'ın hazırladığı fractal zoomer 512 byte'ın altındaydı ve C compilerı ile derlenmişti. Sanırım bir biçimde 7D3 releaseleri arasında yok, eklenmemiş. Ancak sonuçlarda on the fly'da mandel olarak geçiyor.
2) Adını hatırlamadığım basit bir 256b ürün yayınlanmıştı. Ürün çok basit birşey olmasının yanı sıra ürünü hazırlayan coder özelliğinin C derleyicisi kullanarak yapılmış olması olduğunu anlatmıştı. Elbette ki o da EXE2COM benzeri birşeyler kullanmıştı ancak asıl optimizasyonları derleyici tarafunda yaptığını anlatıyordu.
Gelelim 9k'lık sonuca. Bence de çok normal. C/C++ dilleri siz optimizasyon yaparlar, hem de zaman zaman oldukça iyi becerirler bunu. Ama kütüphanelerin kapladığı alanlar işin minimumu gibi birşeydir. Yukarıda saydığım tür özel yöntemler kullanmadıkça kütüphaneler 300 KB kaplasa bunu minimum saymak lazım. Ama kod çok çok uzasa da bu size 300 KB mertebesinde kalabilir. Kısacası bu noktada size optimizasyonları devreye giriyor.
Son bir dip not olarak şunu da belirtmek lazım. Hello world örneği için geçerli olmasa da daha uzun looplar içeren bir kod söz konusu olduğunda "boyut" açısından derleyici ayarları çok önem kazanır. Optimizasyon genellikle birbirine ters düşen iki kriter üzerinden yapılır. Boyut ve hız. Boyut optimizasyonu küçük bir exe ortaya çıkarırken exe daha yavaş çalışacaktır. Hız ise daha büyük bir exe ortaya çıkarsa da hız olarak olabilecek en ideal sonuçlardan biri ortaya çıkacaktır. Bu konuda önemli olan son bir nokta ise derleyicilerin çoğuna yön verilebilir ama tam anlamıyla hükmedilemez. Örnek olarak milyarlarca kez tekrar eden bir loop olduğu durumda hıza göre optimize kod üret dendiğinde derleyici açık bir loop şeklinde GB'lık bir exe oluşturmayacaktır. Yani derleyiciler aldıkları parametrelerin yanında kendi kurallarına göre son kararı vermektedirler. Bu zaman zaman "her iki durumda da aynı exeyi üretti. neden ki?" sorularına sebep olabildiği için belirtmek istedim.