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; i<1000000; i++)
>    puts("felix");
>
>
> Contoh code Java untuk melakukan System.out.println sebanyak 1 juta kali:
>
> for (int i=0; i<1000000; 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; i<1000000; 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
>
>

Kirim email ke