gpt4 book ai didi

Java高效文件写入: String concatentation versus extra call to write()

转载 作者:行者123 更新时间:2023-11-29 03:50:17 26 4
gpt4 key购买 nike

在下面的代码中,哪种情况(1 或 2)更“有效”?

static final String NEWLINE = System.getProperty("line.separator");
Vector<String> text_vec = ...;
FileWriter file_writer = new FileWriter(path);
BufferedWriter buffered_writer = new BufferedWriter(file_writer);
try {
for (String text: text_vec) {

// Case 1: String concatenation
buffered_writer.write(text + NEWLINE);

// Case 2: Extra call to write()
buffered_writer.write(text);
buffered_writer.write(NEWLINE);
}
}
finally {
buffered_writer.close();
}

在案例 #1 中,据我所知,字符串连接由 Java 编译器通过自动分配一个 StringBuilder 对象来处理。由于在编译时不知道字符串值,因此不可能“早期”(在编译时)连接。

那么问题来了:哪个更高效(CPU/内存/挂钟时间)?

我将“有效”的确切定义留给那些回答的人。我不是 Java 虚拟机方面的专家。

最佳答案

除非您对其进行基准测试并证明您有充分的理由,否则您应该直接写入缓冲区。它的存在是为了提供一种有效的写入文件的方法。

此外,不要忘记在完成写入后刷新缓冲区。

关于Java高效文件写入: String concatentation versus extra call to write(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com