哪個運行速度更快:使用OutputStreamWriter.write()來寫入每個字符串,或者使用StringBuilder創建一個大字符串,然後使用write()一次?請解釋原因。使用OutputStreamWriter寫入:逐行對齊全部
下面是使用write()方法多次:
writer.write("Registered Players:\n");
while (it.hasNext()) {
int playerID = (Integer) it.next();
Player player = playerRegistry.get(playerID);
writer.write(playerID+": "+player.getPlayerName()+"\n");
}
這裏與StringBuilder的:
builder.append("Registered Players:\n");
while (it.hasNext()) {
int playerID = (Integer) it.next();
Player player = playerRegistry.get(playerID);
builder.append(playerID+": "+player.getPlayerName()+"\n");
}
writer.write(builder.toString());
在做了一些更多的研究之後,它看起來像我的OutputStreamWriter使用緩衝區將字符流轉換爲字節流。因此,這兩種方法之間可能差別很小。對於任何對速度感興趣的人,Java文檔都提到:「爲了獲得最高效率,請考慮在BufferedWriter內封裝OutputStreamWriter,以避免頻繁的轉換器調用。例如: Writer out = new BufferedWriter(new OutputStreamWriter(System.out));「 – 2012-07-20 02:27:08