Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
coba cari banyak-banyak informasi. System.out.println() sangat tidak direkomendasikan untuk dipakai pada sistem yg 'resource-intensive'. Jadi kalo sampe ada yg bandingin System.out.println() dengan cputs() hmmm... basi dah... yg bikin juga udah tahu. Kayak bandingin gajah sama semut. System.out.println() di java tidaklah benar-benar analog dengan cputs(). Lha, sama printf() aja gak sebanding kok. Hayo, kenapa coba? Gimanapun juga, ada sisi menangnya bagi System.out.println(). (cari dong?) Yang mana keunggulan System.out.println() ini bisa bikin kalang kabut cputs(), dan cputs sendiri bakal butuh puluhan temen-temennya yang lain. Hayo, apa coba cari dong? :D 2008/6/2 Feris Thia [EMAIL PROTECTED]: Wow... kalau saya cara pikirnya bukan seperti itu, suer :) Kalau saya berkepentingan dengan solusi yang kita berikan sebagai provider/vendor IT. Kita selalu setuju, tidak ada solusi yang perfect kan ? Tapi dari eksplorasi si Felix ini saya kok setuju amat ya ? Karena untuk hal trivial I/O seperti ini kalau kita tidak tahu tingkat performancenya maka kita tidak akan pernah tahu jika suatu hari itu akan menjadi bottleneck. Bayangkan sudah terlibat project besar dan menggunakan framework2 canggih tapi performance down dan kita bengong... eh, tau-taunya karena System.out.println atau karena kita tidak tau cara menggunakan printwriter ? hehehe Kalau untuk kalah-kalahan, ga usah topik ini aja... banyak topik yang bisa kita jadikan ajang itu, tapi apa yang didapatkan ? Cuma emosi 'menang' dan 'kalah' ? :p hehehe Just my 2 cents :) Regards, Feris 2008/6/1 sm96 [EMAIL PROTECTED]: ini bukan cara sebanding buat kalah-kalahan java dibikin bagus bisa, dibikin ancur juga bisa c/c++ juga demikian -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com -- syaiful.mukhlis gtalk:[EMAIL PROTECTED]
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Sukma Agung Verdianto [EMAIL PROTECTED]: Jadi penasaran... tadi coba pake - System.out.print(felix\n); sama - System.out. println(felix); hari gini masih ada yang banding system out println :) F
[JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Contoh code C/C++ untuk melakukan puts sebanyak 1 juta kali: for (int i=0; i100; i++) puts(felix); Contoh code Java untuk melakukan System.out.println sebanyak 1 juta kali: for (int i=0; i100; i++) System.out.printlnfelix); Ternyata, menggunakan puts hanya membutuhkan waktu 0.055 detik. Sedangkan menggunakan System.out.println membutuhkan waktu 10 detik. Ada yang tahu kenapa Java bisa selambat ini? Cara improve di Java adalah dengan menggunakan StringBuffer sebelum di println: StringBuffer sb = new StringBuffer(); for (int i=0; i100; i++) sb.append(felix\n); System.out.println(sb.toString()); Ternyata runtimenya turun drastis dari 10 detik menjadi 1.351 detik. StringBuilder lebih cepat sedikit daripada StringBuffer, sekitar 0.430 detik. Tetapi tetap saja itu 0.430 itu 10x lebih lambat dari 0.055 detiknya puts (oleh C/C++). Dan tentu saja, menggunakan StringBuffer / StringBuilder bukan solusi yang baik, karena dia menggunakan MEMORY besar sebagai buffer. Sedangkan puts nya C/C++ tidak perlu menampung nya di buffer (meski internalnya mungkin ada sedikit buffer, tapi itu insignificant). Jadi puts nya C++ boleh dikatakan MENANG TELAK daripada solusi Java dalam bentuk apapun. Apakah ada cara supaya Java tidak kalah setelak ini? Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Felix Halim [EMAIL PROTECTED]: Contoh code C/C++ untuk melakukan puts sebanyak 1 juta kali: for (int i=0; i100; i++) puts(felix); Contoh code Java untuk melakukan System.out.println sebanyak 1 juta kali: for (int i=0; i100; i++) System.out.printlnfelix); Ternyata, menggunakan puts hanya membutuhkan waktu 0.055 detik. Sedangkan menggunakan System.out.println membutuhkan waktu 10 detik. Ada yang tahu kenapa Java bisa selambat ini? Pertama, karena platform java itu managed environment maka pada saat startup banyak aspek yang disiapkan oleh JVM. Untuk detailnya sendiri saya tidak begitu jelas, tapi kira2 di gambaran saya dia harus siapkan table reference object, spawn thread baru untuk garbage collector (CMMIIW). Ini pastinya menjadi overhead setiap program java. Kedua, karena java bermain dengan bytecode maka perlu ada translasi dari bytecode untuk menjadi native code. Jelas saja ini berarti ada overhead untuk setiap eksekusi kode program. Untuk itu muncul optimasi Just In Time compiler, di mana JVM akan menganalisa code yang sering dieksekusi (misal: 1 kali eksekusi) dan melakukan optimasi, di antaranya dengan menyimpan native code dari bytecode tersebut sehingga tidak perlu ada overhead untuk translasi lagi. Untuk hal ini ada pilihan tuning yg bisa dilakukan. Cara improve di Java adalah dengan menggunakan StringBuffer sebelum di println: StringBuffer sb = new StringBuffer(); for (int i=0; i100; i++) sb.append(felix\n); System.out.println(sb.toString()); Ternyata runtimenya turun drastis dari 10 detik menjadi 1.351 detik. StringBuilder lebih cepat sedikit daripada StringBuffer, sekitar 0.430 detik. Tetapi tetap saja itu 0.430 itu 10x lebih lambat dari 0.055 detiknya puts (oleh C/C++). Dan tentu saja, menggunakan StringBuffer / StringBuilder bukan solusi yang baik, karena dia menggunakan MEMORY besar sebagai buffer. Sedangkan puts nya C/C++ tidak perlu menampung nya di buffer (meski internalnya mungkin ada sedikit buffer, tapi itu insignificant). Jadi puts nya C++ boleh dikatakan MENANG TELAK daripada solusi Java dalam bentuk apapun. Apakah ada cara supaya Java tidak kalah setelak ini? IMO dalam hal ini java tidak bisa dibandingkan dengan C/C++. Target pengguna platformnya sendiri jelas berbeda. Java ditujukan untuk memudahkan pembuatan program yang agar programmer misalnya tidak perlu repot dengan memory management. Sedangkan C/C++ lebih untuk problem yang low level atau yang butuh keuntungan (kecepatan) dari native binary misalnya driver, DLL library, game programming, real time programming. Meskipun bisa saja kita melihat Java dipakai untuk game programming dan program enterprise dibuat dengan C/C++. Felix Halim Regards, Jecki
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Felix, Tantangan menarik ;) Code gue ini lulus ga ? = http://pastebin.com/m4f36f681 Atau kalo gue paste disini : package test.io; import java.io.PrintWriter; import java.text.DecimalFormat; public class FelixIO { public static void main(String[] args) { //Mencatat waktu awal proses long waktuMulai= System.currentTimeMillis(); PrintWriter out = new PrintWriter(System.out); for (int i = 0; i = 100; i++) { out.write(felix\n,0,6); if(i==2000) out.flush(); } //Mencatat waktu akhir proses long waktuSelesai = System.currentTimeMillis(); double newRunTime = (double)(waktuSelesai - waktuMulai) / 1000; DecimalFormat runtimeDF = new DecimalFormat(##0.00); out.println(Durasi ekseksi : + runtimeDF.format(newRunTime) + detik); out.flush(); out.close(); } } Regards, Feris -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Feris Thia [EMAIL PROTECTED]: Code gue ini lulus ga ? = http://pastebin.com/m4f36f681 Yup code kamu keliatannya kencang :) Solusi PrintWriter lebih cepat daripada StringBuilder, runtimenya 0.321 seconds. Tetapi keliahatannya PrintWriter harus manage buffernya sendiri yah. Saya coba BufferedWriter lebih cepat sedikit, runtimenya 0.246 seconds. Kelihatannya sampai saat ini solusi tercepat adalah menggunakan BufferedWriter. Codenya sebagai berikut: BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); for (int i=0; i100; i++) bw.write(felix\n); Internal buffernya saya tidak tahu sebesar apa, tapi harusnya cukup memory efisien. Runtime terbaiknya Java (sampai saat ini) masih lebih lamban 4.4 kali daripada puts nya C/C++. Tapi saya kira ini sudah cukup bagus. Hal yang sama berlaku untuk baca input. Menggunakan BufferedReader jauh lebih cepat dari pada langsung menggunakan Scanner. Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Wow.. belum tidur? Sama dong... hehehe O iya, pakai thread boleh ga ? kalau boleh, ini ada code saya berikut.. coba gabungkan dengan code kamu.. mungkin bisa lebih kencang lagi ? ;) = package test.io; public class JajalIO { public static void main(String[] args) { for(int i=1;i=10;i++) { ConsumeThread.getThread(10).start(); } } } = package test.io; import java.io.PrintWriter; public class ConsumeThread extends Thread { int mycounter; int batas; PrintWriter out; private ConsumeThread(int c) { out = new PrintWriter(System.out); batas = c; mycounter=0; } public void run() { while(mycounterbatas) { mycounter++; out.write(Felix\n,0,6); if(mycounter==500) out.flush(); } if(mycounter(batas-500)) out.flush(); } public static ConsumeThread getThread(int c) { return new ConsumeThread(c); } } 2008/6/1 Felix Halim [EMAIL PROTECTED]: -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Jecki Sumargo [EMAIL PROTECTED]: Pertama, karena platform java itu managed environment maka pada saat startup banyak aspek yang disiapkan oleh JVM. Untuk detailnya sendiri saya tidak begitu jelas, tapi kira2 di gambaran saya dia harus siapkan table reference object, spawn thread baru untuk garbage collector (CMMIIW). Ini pastinya menjadi overhead setiap program java. Betul, tapi 10 detik lebih lambat itu pasti ada apa2nya. Dan terjadi pada hal yang trivial seperti System.out.println bukanlah sesuatu yang bisa di-ignore begitu saja. Kedua, karena java bermain dengan bytecode maka perlu ada translasi dari bytecode untuk menjadi native code. Jelas saja ini berarti ada overhead untuk setiap eksekusi kode program. Untuk itu muncul optimasi Just In Time compiler, di mana JVM akan menganalisa code yang sering dieksekusi (misal: 1 kali eksekusi) dan melakukan optimasi, di antaranya dengan menyimpan native code dari bytecode tersebut sehingga tidak perlu ada overhead untuk translasi lagi. Untuk hal ini ada pilihan tuning yg bisa dilakukan. Tuning apakah yang bisa digunakan untuk mempercepat I/O seperti problem diatas? IMO dalam hal ini java tidak bisa dibandingkan dengan C/C++. Target pengguna platformnya sendiri jelas berbeda. Java ditujukan untuk memudahkan pembuatan program yang agar programmer misalnya tidak perlu repot dengan memory management. Betul, tetapi sejauh apakah Java bisa melambat karenanya? Dan teknik apa sajakah yang bisa kita lakukan untuk mempercepatnya? Itu yang sekarang lagi saya bahas :) Sedangkan C/C++ lebih untuk problem yang low level atau yang butuh keuntungan (kecepatan) dari native binary misalnya driver, DLL library, game programming, real time programming. Meskipun bisa saja kita melihat Java dipakai untuk game programming dan program enterprise dibuat dengan C/C++. +1 Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Penggunaan 10 threads untuk output masing2 100,000 baris tidak lebih cepat dari single thread. Err.. tujuan saya ini untuk mencari tahu apa yang membuat puts begitu cepat (4.4 kali dari System.out.println nya Java) Java gak boleh maen licik pake multi-threading donk :P hehe. Felix Halim 2008/6/2 Feris Thia [EMAIL PROTECTED]: Wow.. belum tidur? Sama dong... hehehe O iya, pakai thread boleh ga ? kalau boleh, ini ada code saya berikut.. coba gabungkan dengan code kamu.. mungkin bisa lebih kencang lagi ? ;) = package test.io; public class JajalIO { public static void main(String[] args) { for(int i=1;i=10;i++) { ConsumeThread.getThread(10).start(); } } } = package test.io; import java.io.PrintWriter; public class ConsumeThread extends Thread { int mycounter; int batas; PrintWriter out; private ConsumeThread(int c) { out = new PrintWriter(System.out); batas = c; mycounter=0; } public void run() { while(mycounterbatas) { mycounter++; out.write(Felix\n,0,6); if(mycounter==500) out.flush(); } if(mycounter(batas-500)) out.flush(); } public static ConsumeThread getThread(int c) { return new ConsumeThread(c); } } 2008/6/1 Felix Halim [EMAIL PROTECTED]: -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
I see, Ok de kalo gitu ;) Tapi ini juga karena implementasi multi threading di c/c++ susah banget ya ? :p hehehe Jadi +1 untuk Java ? Dan ada 2 note lagi, bisa coba dumping ke text file.. kecepatannya sama ga ya ? = ini benar2 pertanyaan benchmarking, soalnya karena saya di BI jadi sangat berkepentingan, contohnya untuk performance data staging. Walau saya mungkin ga pernah sentuh C/C++ tapi kan di Java bisa menggunakan native api... jadi mungkin ada gunanya. hehe, tapi kalo ga sempat gapapa... it's just a casual - nice to have one. kedua= java 7 katanya akan memiliki io baru. Coba search di youtube untuk google tech talk dan sun java new io (nio). Youtube lagi lelet banget di sini jadi gue ga bisa kasih urlnya :( Regards, Feris 2008/6/1 Felix Halim [EMAIL PROTECTED]: Penggunaan 10 threads untuk output masing2 100,000 baris tidak lebih cepat dari single thread. Err.. tujuan saya ini untuk mencari tahu apa yang membuat puts begitu cepat (4.4 kali dari System.out.println nya Java) Java gak boleh maen licik pake multi-threading donk :P hehe. Felix Halim - 10 New Membershttp://groups.yahoo.com/group/jug-indonesia/members;_ylc=X3oDMTJmYnYyaW5qBF9TAzk3MzU5NzE0BGdycElkAzk4Nzc3NDAEZ3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEyMTIzNDMwNjE- Visit Your Group http://groups.yahoo.com/group/jug-indonesia;_ylc=X3oDMTJlMDR2Y3I2BF9TAzk3MzU5NzE0BGdycElkAzk4Nzc3NDAEZ3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTIxMjM0MzA2MQ-- Yahoo! Finance It's Now Personalhttp://us.ard.yahoo.com/SIG=13oelkud2/M=493064.12016257.12445664.8674578/D=groups/S=1705006905:NC/Y=YAHOO/EXP=1212350262/L=/B=BeRpAkJe5FY-/J=1212343062007719/A=4507179/R=0/SIG=12de4rskk/*http://us.rd.yahoo.com/evt=50284/*http://finance.yahoo.com/personal-finance Guides, news, advice more. New business? Get new customers.http://us.ard.yahoo.com/SIG=13o3lnr4f/M=493064.12016308.12445700.8674578/D=groups/S=1705006905:NC/Y=YAHOO/EXP=1212350262/L=/B=BuRpAkJe5FY-/J=1212343062007719/A=3848640/R=0/SIG=131an6mds/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2002cmp=Yahooctv=Groups1s=Ys2=s3=b=50 List your web site in Yahoo! Search. Best of Y! Groups Check it outhttp://us.ard.yahoo.com/SIG=13ogvcrg9/M=493064.12016306.12445698.8674578/D=groups/S=1705006905:NC/Y=YAHOO/EXP=1212350262/L=/B=B.RpAkJe5FY-/J=1212343062007719/A=4763759/R=0/SIG=11ou7otip/*http://advision.webevents.yahoo.com/bestofyahoogroups/ and nominate your group to be featured. . -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Jadi penasaran... tadi coba pake- System.out.print(felix\n); sama - System.out. println(felix); yang pertama selesai sekitar 10s yang kedua sekitar 18s, ininya aja bedanya lumayan banyak. byw, kok angkanya jauh ya :O??? Itu pake hardware apa ya :O? OS-nya apa? mungkin menggunakan rasio jadi lebih jelas karena speednya relatif? Kalo ceritanya kayak diatas... keknya kudu bedah JVM... and some core classes-nya Java. Regards, Sukma 2008/6/1 Felix Halim [EMAIL PROTECTED]: Contoh code C/C++ untuk melakukan puts sebanyak 1 juta kali: for (int i=0; i100; i++) puts(felix); Contoh code Java untuk melakukan System.out.println sebanyak 1 juta kali: for (int i=0; i100; i++) System.out.printlnfelix); Ternyata, menggunakan puts hanya membutuhkan waktu 0.055 detik. Sedangkan menggunakan System.out.println membutuhkan waktu 10 detik. Ada yang tahu kenapa Java bisa selambat ini? Cara improve di Java adalah dengan menggunakan StringBuffer sebelum di println: StringBuffer sb = new StringBuffer(); for (int i=0; i100; i++) sb.append(felix\n); System.out.println(sb.toString()); Ternyata runtimenya turun drastis dari 10 detik menjadi 1.351 detik. StringBuilder lebih cepat sedikit daripada StringBuffer, sekitar 0.430 detik. Tetapi tetap saja itu 0.430 itu 10x lebih lambat dari 0.055 detiknya puts (oleh C/C++). Dan tentu saja, menggunakan StringBuffer / StringBuilder bukan solusi yang baik, karena dia menggunakan MEMORY besar sebagai buffer. Sedangkan puts nya C/C++ tidak perlu menampung nya di buffer (meski internalnya mungkin ada sedikit buffer, tapi itu insignificant). Jadi puts nya C++ boleh dikatakan MENANG TELAK daripada solusi Java dalam bentuk apapun. Apakah ada cara supaya Java tidak kalah setelak ini? Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
ini bukan cara sebanding buat kalah-kalahan java dibikin bagus bisa, dibikin ancur juga bisa c/c++ juga demikian 2008/6/2 Feris Thia [EMAIL PROTECTED]: Felix, Tantangan menarik ;) Code gue ini lulus ga ? = http://pastebin.com/m4f36f681 Atau kalo gue paste disini : package test.io; import java.io.PrintWriter; import java.text.DecimalFormat; public class FelixIO { public static void main(String[] args) { //Mencatat waktu awal proses long waktuMulai= System.currentTimeMillis(); PrintWriter out = new PrintWriter(System.out); for (int i = 0; i = 100; i++) { out.write(felix\n,0,6); if(i==2000) out.flush(); } //Mencatat waktu akhir proses long waktuSelesai = System.currentTimeMillis(); double newRunTime = (double)(waktuSelesai - waktuMulai) / 1000; DecimalFormat runtimeDF = new DecimalFormat(##0.00); out.println(Durasi ekseksi : + runtimeDF.format(newRunTime) + detik); out.flush(); out.close(); } } Regards, Feris -- Thanks Best Regards, Feris PT. Putera Handal Indotama A Business Intelligence Company Jl. K.H. Moh Mansyur No. 11 B 8 - 12 Jakarta - Indonesia Phone : +6221-30119353 Fax : +6221-5513483 Mobile : +628176-474-525 http://business-intelligence.phi-integration.com http://blog.komputasiawan.com -- syaiful.mukhlis gtalk:[EMAIL PROTECTED]
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
berawal dari paradigma yg berbeda, tidak bisa asal diuji dengan sembarang cara. 2008/6/2 Sukma Agung Verdianto [EMAIL PROTECTED]: Jadi penasaran... tadi coba pake - System.out.print(felix\n); sama - System.out. println(felix); yang pertama selesai sekitar 10s yang kedua sekitar 18s, ininya aja bedanya lumayan banyak. byw, kok angkanya jauh ya :O??? Itu pake hardware apa ya :O? OS-nya apa? mungkin menggunakan rasio jadi lebih jelas karena speednya relatif? Kalo ceritanya kayak diatas... keknya kudu bedah JVM... and some core classes-nya Java. Regards, Sukma 2008/6/1 Felix Halim [EMAIL PROTECTED]: Contoh code C/C++ untuk melakukan puts sebanyak 1 juta kali: for (int i=0; i100; i++) puts(felix); Contoh code Java untuk melakukan System.out.println sebanyak 1 juta kali: for (int i=0; i100; i++) System.out.printlnfelix); Ternyata, menggunakan puts hanya membutuhkan waktu 0.055 detik. Sedangkan menggunakan System.out.println membutuhkan waktu 10 detik. Ada yang tahu kenapa Java bisa selambat ini? Cara improve di Java adalah dengan menggunakan StringBuffer sebelum di println: StringBuffer sb = new StringBuffer(); for (int i=0; i100; i++) sb.append(felix\n); System.out.println(sb.toString()); Ternyata runtimenya turun drastis dari 10 detik menjadi 1.351 detik. StringBuilder lebih cepat sedikit daripada StringBuffer, sekitar 0.430 detik. Tetapi tetap saja itu 0.430 itu 10x lebih lambat dari 0.055 detiknya puts (oleh C/C++). Dan tentu saja, menggunakan StringBuffer / StringBuilder bukan solusi yang baik, karena dia menggunakan MEMORY besar sebagai buffer. Sedangkan puts nya C/C++ tidak perlu menampung nya di buffer (meski internalnya mungkin ada sedikit buffer, tapi itu insignificant). Jadi puts nya C++ boleh dikatakan MENANG TELAK daripada solusi Java dalam bentuk apapun. Apakah ada cara supaya Java tidak kalah setelak ini? Felix Halim -- syaiful.mukhlis gtalk:[EMAIL PROTECTED]
RE: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
Sudah coba pake parameter -server pada saat run? # java -server class Kalo mau lebih cepet lagi, coba pake IBM JDK (versi 1.4) deh. Bisa 2x lebih cepat daripada C++
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 sm96 [EMAIL PROTECTED]: ini bukan cara sebanding buat kalah-kalahan java dibikin bagus bisa, dibikin ancur juga bisa c/c++ juga demikian Kenapa tidak sebanding? println dan puts secara logika equivalent kok. Kenapa di Java begitu lambat? Java lebih gampang hancur daripada C/C++ (dalam soal performance). Contoh, tadi saya barusan nge-test C/C++ puts diganti jadi printf, kecepatannya melamban dari 0.055 menjadi 0.220 secs. Tetapi setelah saya nyalakan compiler optimization -O3, code printf nya jadi kenceng lagi seperti code puts, yaitu 0.055. Mungkin compiler optimization nya C/C++ bisa ubah printf menjadi puts where applicable. Sedangkan di Java, mana bisa compiler optimizationnya ngubah dari System.out.println menjadi pake BufferedWriter ? Jadi di Java performance optimizationnya saya kira masih perlu ditingkatkan. 2008/6/2 sm96 [EMAIL PROTECTED]: 2008/6/2 Sukma Agung Verdianto [EMAIL PROTECTED]: Jadi penasaran... tadi coba pake - System.out.print(felix\n); sama - System.out. println(felix); berawal dari paradigma yg berbeda, tidak bisa asal diuji dengan sembarang cara. Jadi kamu menerima apa adanya bahwa Java lambat? Jika tidak, coba tolong kasih cara yang tidak sembarangan untuk menguji paradigma berbeda ini. Diatas, kenapa kamu mengatakan kalo membandingkan: System.out.print(felix\n) dengan System.out. println(felix) adalah cara yang sembarangan? (itu lho yang saya tangkep, kalau salah mohon di-koreksi). Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Ilhamsyah Edwar [EMAIL PROTECTED]: Sudah coba pake parameter -server pada saat run? # java -server class Saya coba command diatas keluarnya: Error: no `server' JVM at `C:\PROGRA~1\Java\JRE16~2.0_0\bin\server\jvm.dll'. Mungkin ini cocok untuk membuka thread baru untuk membahas: apa keuntungan -server dibanding tidak pakai. Kalo mau lebih cepet lagi, coba pake IBM JDK (versi 1.4) deh. Bisa 2x lebih cepat daripada C++ Saya tidak punya IBM JDK, mungkin yang punya bisa coba test kalu sempat? Felix Halim
Re: [JUG-Indonesia] puts nya C/C++ vs. System.out.println nya Java (Result: Java kalah telak!)
2008/6/2 Felix Halim [EMAIL PROTECTED]: 2008/6/2 Ilhamsyah Edwar [EMAIL PROTECTED]: Sudah coba pake parameter -server pada saat run? # java -server class Saya coba command diatas keluarnya: Error: no `server' JVM at `C:\PROGRA~1\Java\JRE16~2.0_0\bin\server\jvm.dll'. Mungkin ini cocok untuk membuka thread baru untuk membahas: apa keuntungan -server dibanding tidak pakai. Ini salah satu option tuning JIT compiler. Pilihannya ada -server dan -client (sepertinya Sun JVM specific). JIT itu bekerja mengubah bytecode menjadi native. Tapi berhubung ini akan menimbulkan overhead maka ada mekanisme untuk menunggu sampai method tersebut dipanggil X kali sebelum bytecodenya ditranslasi jadi native code. Nah angka X ini yang berbeda antara option -server dan -client, hanya saya tidak tahu detailnya. Silakan dicari di google. Saya ketemu satu link yg bagus tentang JIT http://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=/com.ibm.java.doc.diagnostics.142j9/html/id1218.html. Kalo mau lebih cepet lagi, coba pake IBM JDK (versi 1.4) deh. Bisa 2x lebih cepat daripada C++ Saya tidak punya IBM JDK, mungkin yang punya bisa coba test kalu sempat? Felix Halim