Berikut adalah updated summary dari runtime untuk 1 juta kali print "felix\n".
Komputer yang saya gunakan sekarang beda, tapi semua runs dicomputer yang sama.

- C/C++ fputs("felix") = 0.055 secs
- C/C++ fprintf("felix\n") = 0.055 secs (gak beda pake -O3)
- Java System.out.print("felix\n") = 5.227 secs
- Java System.out.println("felix") = 9.774 secs
- Java 1 juta kali append di StringBuffer + 1x System.out.println
(Java) = 0.273 secs
- Java 1 juta kali append di StringBuilder + 1x System.out.println
(Java) = 0.220 secs
- Java PrintWriter = 0.218 secs
- Java BufferedWriter = 0.186 secs
- Java NIO = 0.857 secs


Java NIO dalam hal ini malah lebih lambat.
Mungkin saya masih blum bisa memakai Java NIO dengan benar...
Berikut code Java NIO nya (sama sih sama sebelumnya).
Saya sudah tune untuk loop i dan j, yang terbaik adalah 100 x 10000.


                FileOutputStream fout = new FileOutputStream("speednio.out");
                FileChannel fc = fout.getChannel();
                ByteBuffer buffer = ByteBuffer.allocate(60000);

                byte[] msg = "felix\n".getBytes();
                for (int i=0; i<100; i++){
                        buffer.clear();
                        for (int j=0; j<10000; j++) buffer.put(msg);
                        buffer.flip();
                        fc.write(buffer);
                }

                fout.close();


Solusi terbaik masih BufferedWriter :D
Yang roughly 3-4 kali lebih lambat dari puts.

Felix Halim

Kirim email ke