Yet another “Hello World” in C

Pada eksperimen berikut ini, compiler yang saya pakai adalah MS Visual C++ 2008.

Tipikal program “Hello World” di C kira-kira adalah sebagai berikut (asumsikan nama file hello.c) :

#include <stdio.h>

int main(){
    printf("Hello World");
    return 0;
}

Compile :

cl hello.c

Jadilah suatu executable berukuran 48 KB. Kalau menurut anda 48 KB masih terlalu besar, anda bisa menghindari penggunaan C runtime, dan code diatas menjadi sebagai berikut :

#include <windows.h>

void main(){
    DWORD chars;
    HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsoleA(stdout,"Hello World",11,&chars,0);
    ExitProcess(0);
}

Compile :

cl /c hello.c
link /nodefaultlib /entry:main hello.obj kernel32.lib

Hasilnya ? Executable berukuran 2.5 KB. Yay !! Kalau ditulis ulang dengan 100% assembly, kayanya bisa lebih compact lagi. He he entahlah gimana …

Pentingkah optimasi semacam ini ? Saya pikir tidak. Harddisk bergiga-giga sudah relatif murah.

Lebih baik mengoptimasi algoritma yang digunakan untuk meningkatkan efisiensi.

Tapi kalau anda membuat sesuatu, katakanlah virus atau demoscene, optimasi ukuran diatas memang diperlukan. Dan adakalanya membuat program sekecil-kecilnya adalah guilty pleasure di kalangan programmer.

Yah, mau diapain lagi ?:mrgreen:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s