PDA

View Full Version : Perbandingan kedalaman rekursi di Linux dan Windows


ecwx
18-09-2006, 07:06 PM
Halo all,

Iseng2 gw kemarin bikin program maze generator dengan algoritma depth first traversal sederhana. Gw bikin dalam bahasa C murni standar, dengan menggunakan library Mersenne Twister (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html) untuk random generator-nya dengan menmasukkan source code ikut ke dalam project gw.

Awalnya program gw compile dan gw jalanin di PC kerja gw, Debian Linux, habis itu gw coba compile di desktop temen, dengan RAM 256 MB yang dual boot win XP dan Linux hasil-nya cukup menarik.

* Di Debian Linux, RAM 1 GB, program bisa meng-generate maze dengan ukuran 400x400 tanpa masalah

* Di SimplyMepis, RAM 256 MB, program bisa meng-generate maze dengan ukuran 400x400 tanpa masalah

* Di Windows XP, compile menggunakan Visual Studio 2005 Express, hanya bisa meng-generate maze dengan ukuran 60 x 60

* Di Windows XP, compile dengan MINGW, hanya bisa meng-generate maze dengan ukuran 150x150

Kalau gw jalanin untuk meng-generate maze yang lebih besar daripada angka di atas program akan exit dengan error segmentation fault.

Karena penasaran, gw coba ukur berapa kedalam rekursi yang bisa dijelajaih program tersebut:

* Di Linux 1 GB, program bisa menjalani rekursi dengan kedalaman sekitar 104700 sebelum error segmentation fault

* Di Linux 256 MB, program bisa menjalani rekursi dengan kedalaman sekitar 104700 sebelum error segmentation fault

* Di Windows XP dengan program dikompail menggunakan MINGW, program bisa menjalani rekursi dengan kedalaman sekitar 26000 sebelum error segmentation fault

* Di Windows XP dengan program dikompail menggunakan VS2005E, program hanya bisa menjalani rekursi dengan kedalaman sekitar 3600 sebelum error segmentation fault !!!!

GW agak kaget dengan hasil percobaan iseng2 gw ini, gw gak nyangka perbedaan di windows dan linux jauh banget. Emang sih kayanya kebanyakan program gak akan melakukan rekursi sampai kedalaman puluhan ribu, apalagi ratusan ribu :D Tapi tetep aja hasil ini menarik perhatian gw.

Yang cukup menarik juga adalah sama di Windows XP, tapi menggunakan compiler yang berbeda (Microsoft VS2005E dan MINGW) menghasilkan hasil yang cukup jauh juga.

Gw merencanakan mau melakukan test rekursi dengan program yang lebih sederhana untuk mengetahui lebih jauh apakah penyebab keterbatasan ada di ketersediaan memory, atau emang disain OS/compiler-nya

Just want to share with you all, siapa tahu ada manfaatnya :)

ruboW
19-09-2006, 01:12 PM
>>Yang cukup menarik juga adalah sama di Windows XP, tapi menggunakan compiler yang berbeda (Microsoft VS2005E dan MINGW) menghasilkan hasil yang cukup jauh juga.

mmaf... newbie...
compiler bahasa mesin?

ecwx
19-09-2006, 05:42 PM
bahasa C/C++, vs2005e = visual studio 2005 express, mingw = gcc di windows.


eniwei, hasil gw explore2 penyebab keterbatasan tsb bukanlah ketersediaan sistem memori, melainkan alokasi stack. Karena itu di linux 256 MB dengan linux 1 GB limit yang ditemui sama. Di windows. kayanya default stack size yang dialokasikan oleh VS 2005 SE lebih kecil dari yang dialokasikan oleh MingW.

Gw sekarang udah buat maze generator dengan alogritma deep first traversal tanpa menggunakan rekursi sehingga tidak mentok di limitasi stack, hasilnya gw bisa meng-generate maze dengan ukuran lebih dari 1000x1000 tanpa masalah :)

ruboW
20-09-2006, 03:03 PM
>>Yang cukup menarik juga adalah sama di Windows XP, tapi menggunakan compiler yang berbeda (Microsoft VS2005E dan MINGW) menghasilkan hasil yang cukup jauh juga.

nanya lagi!!
boleh minta filenya? ngetes di tempat gw.. disini pake win 2000

ecwx
20-09-2006, 04:16 PM
Ok, tar gw upload :)

eniwei, gw cobain lagi pake VS 2005 SE dengan setting /STACK:16000000 , programnya bisa mencapai kedalaman rekursi sekitar 50-ribuan, jadi ternyata memang masalah alokasi ukuran stack.

ada tools yang bisa ngukur pemakaian memori oleh sebuah program gak ya ?, gw mau ngukur seberapa besar program gw makan memori

dalay
20-09-2006, 04:42 PM
apa itu juga bukan karena "kesalahan" compilernya? apa cuma OS nya aja yg pengaruh?

ruboW
21-09-2006, 10:02 AM
gw ada
gunakan C kl mau buat prog kayak gini

itu mah liat di task manager aja.. ada kok berapa kb yg dipake!!

ecwx
21-09-2006, 03:21 PM
apa itu juga bukan karena "kesalahan" compilernya? apa cuma OS nya aja yg pengaruh?

:D justru kayanya karena compiler-nya, bukan karena OS-nya :D
soalnya di VS 2005 E, gw ubah setting stack-nya langsung bisa nambah kedalaman rekursi


gw ada
gunakan C kl mau buat prog kayak gini

itu mah liat di task manager aja.. ada kok berapa kb yg dipake!!


hmmm... :D itu dia, gw lebih banyak pake linux :D ya udah tar gw coba di windows, di linux bisa juga lihat pake top, tapi tampilan memory usage-nya dalam %, bukan dalam kb

eniwei, ini program yang gw buat, cuman iseng2 buat bikin maze dalam btk text yang bisa di-print dan di-mainin diatas kertas :D

ecwx
22-09-2006, 11:48 AM
O iya, buat compile-nya,

kalau di linux:
gcc -o mazegen main.c mazegen.c mt19937ar.c perm.c

kalau di windows pake mingw, dari dalam MSYS:
gcc -o mazegen main.c mazegen.c mt19937ar.c perm.c

kalau di windows pake VS 2005 E, new project->console application->empty project, trus masukin file2: main.c mazegen.c mt19937ar.c perm.c ke dalam project trus build


Jalaninnya: mazegen [namafile] [lebar] [panjang], mis: mazegen hasil.txt 100 100 akan menghasilkan maze dengan ukuran 100x100 dan hasilnya disimpan ke file hasil.txt