[Java lista] standard kimenetre valo iras felgyorsitasa

Laszlo Szathmary szathmar at loria.fr
2009. Nov. 27., P, 21:44:40 CET


> A Sytem.out helyett használd a következő szösszenetet:
>
> PrintStream bufferedSystemOut = new PrintStream(new
> BufferedOutputStream(System.out,1024*1024))

Sziasztok!

Koszonom a valaszokat. Csinaltam egy kis osszehasonlito tesztet es az
eredmeny egeszen megdobbento. Maga a tesztprogram itt megtalalhato:
http://paste.org/pastebin/view/12306 .

A lenyeg (1 millio iteracio eseten, a kimenet egy 18 MB-os text file):

(1) System.out.print
10697 msec

(2) PrintStream bufferedSystemOut =
      new PrintStream(new BufferedOutputStream(System.out, 4096));
bufferedSystemOut.print("abcdefghijk ");
...
bufferedSystemOut.flush();

1514 msec

Megjegyzes: nem szukseges nagyon nagy puffert hasznalni, 4 KB is eleg.
A vegen ne felejtsuk el meghivni a flush()-t.

(3) BufferedWriter out =
         new BufferedWriter(new OutputStreamWriter(System.out), 4096);
out.write("abcdefghijk ");
...
out.flush();

382 msec

=====

Lac


További információk a(z) Javalist levelezőlistáról