Gönderen Konu: kod çıktısı büyük değil mi?  (Okunma sayısı 6175 defa)

kod çıktısı büyük değil mi?

« : 17.04.2009 01:14:10 »
Hızlı düğmeleri aç

horselogy

İleti: 64

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://horselogy.blogspot.com
cpp ile hello world programı yazıp derledim. (gnu gcc ile) çıktı 9kb oldu. Büyük değil mi bu çıktı?

kod çıktısı büyük değil mi?

« Yanıtla #1 : 17.04.2009 06:57:35 »
Hızlı düğmeleri aç

coze

İleti: 238

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
eee ... normal.

kod çıktısı büyük değil mi?

« Yanıtla #2 : 17.04.2009 10:53:15 »
Hızlı düğmeleri aç

horselogy

İleti: 64

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://horselogy.blogspot.com
#include dediğim zaman bütün stdio yu kodun içerisine gömüyor da o yüzden mi bu kadar büyük ? yoksa başka bir sebepten mi?

kod çıktısı büyük değil mi?

« Yanıtla #3 : 17.04.2009 11:42:37 »
Hızlı düğmeleri aç

coze

İleti: 238

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
butun stdio'yu kodun icerisine gomdugunden emin degilim ama kullanidigin isletim sistemine ozgu header'lar vs giriyor isin icine.

http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

kod çıktısı büyük değil mi?

« Yanıtla #4 : 17.04.2009 12:30:59 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Sanırım yanlış kategoride tartışıyorsunuz arkadaşlar. C=++ Commodore 64 için Nightlord'un geliştirdiği bir compiler. şu anda dönen muhabbet sanki genel bir C++ derleme muhabbeti gibi geldi bana. Yanılıyor muyum? Eğer C=++ (aka: CEPP) ile ilgili değilse bu yazılanlar, topici taşıyacağım.

kod çıktısı büyük değil mi?

« Yanıtla #5 : 17.04.2009 12:47:03 »
Hızlı düğmeleri aç

Decipher

İleti: 482

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://beskrajnost.com
C++ ile 9kb hello world kucuk bile (CRT included).
100% pure coder pr0n

kod çıktısı büyük değil mi?

« Yanıtla #6 : 17.04.2009 18:03:16 »
Hızlı düğmeleri aç

horselogy

İleti: 64

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://horselogy.blogspot.com
kategoridei = işaretini farketmemişim C++ sandım :)

kod çıktısı büyük değil mi?

« Yanıtla #7 : 17.04.2009 18:10:14 »
Hızlı düğmeleri aç

horselogy

İleti: 64

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://horselogy.blogspot.com
hmm low level değince beklentim fazla oldu heralde benim :) madem normal sorun yok o zaman

kod çıktısı büyük değil mi?

« Yanıtla #8 : 18.04.2009 00:59:42 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
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.

kod çıktısı büyük değil mi?

« Yanıtla #9 : 18.04.2009 13:12:29 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
Bahsettiğin C ile yazılan 256b bu sanırım: C is Possible / Wamma

kod çıktısı büyük değil mi?

« Yanıtla #10 : 18.04.2009 13:32:30 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Aaaa, Anes hortladı. Naber kardeşim? :) Evet oydu bahsettiğim. ısmi de açıklıyor olayı zaten.