感谢您的建议。我创建了一个测试程序来比较它们:
import java.io.BufferedOutputStream;import java.io.BufferedWriter;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.lang.StringBuilder;public class systemouttest { public static void main(String[] args) throws Exception { long starttime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) {System.out.println( i ); } long printlntime = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 100000; i++) { sb.append( i + "n" ); } System.out.print(sb.toString()); long stringbuildertime = System.currentTimeMillis(); OutputStream out = new BufferedOutputStream ( System.out ); for (int i = 0; i < 100000; i++) { out.write((i + "n").getBytes()); } out.flush(); long bufferedoutputtime = System.currentTimeMillis(); BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out)); for (int i = 0; i < 100000; i++) { log.write(i + "n"); } log.flush(); long bufferedwritertime = System.currentTimeMillis(); System.out.println( "System.out.println: " + (printlntime - starttime) ); System.out.println( "StringBuilder: " + (stringbuildertime - printlntime) ); System.out.println( "BufferedoutputStream: " + (bufferedoutputtime - stringbuildertime) ); System.out.println( "BufferedWriter: " + (bufferedwritertime - bufferedoutputtime) ); }}结果:
Environment1
System.out.println:482
StringBuilder:210
BufferedoutputStream:86
BufferedWriter:202
Environment2
System.out.println:1763
StringBuilder:45
BufferedoutputStream:76
BufferedWriter:34
这些建议的表现均优于System.out.println。BufferedOutputStream似乎是最安全的选择,因为它在两种测试环境中均表现良好。BufferedWriter也许更快。
如果有人有任何想法,请发表进一步的建议。我敢肯定有人可以使它更快:)



