Cha*_*ani 29 java io console performance
在阅读Java I/O时,我意识到有两种方法可以写入标准输出.
以下是使用这两种技术的代码段
import java.io.*;
public class ConsoleIO {
public static void main(String[] args) {
System.out.println("Method 1");
PrintWriter writer = new PrintWriter(System.out);
writer.println("Method 2");
writer.flush();
writer.close();
}
}
Run Code Online (Sandbox Code Playgroud)
使用一个比另一个有任何性能优势吗?
Hen*_*son 18
一个快速的谷歌在Coderanch上发布了一个很有用的帖子.
还有其他几种方法可以进行控制台编写,但除了编写较少的代码之外,使用其中一种方法似乎没有任何实际好处,并且创建新的PrintWriter对象将占用更多内存(最终).
PrintWriter可以写入除控制台之外的其他来源,它可以写入HttpResponse,例如System.out.println只写入控制台.
Sam*_*Sam 17
不同的两种方法是:
System.out.print("")实际使用的PrintStream实例时.实际上差异在两个类别中PrintStream,PrintWriter它们是:
PrintStream是一个字节流,PrintWrite而是一个字符流.PrintStream使用平台的默认编码,但PrintWriter您可以使用特定编码传递OutputStreamWriter.样品:
PrintStream stream = new PrintStream(output);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"));您可以根据自己的要求选择方法.
根据您要执行的 I/O 量,使用缓冲区可能有很多好处。理想情况下,您应该限制对输入源的调用次数,并将字节作为块读取。
想象一下一个桶里有 10 个鹅卵石,你想把它们移到另一个桶里。你可以抓起一把鹅卵石,然后把它们移过去。你不需要去拿铲子,那太浪费了。但是,如果桶里有成千上万的卵石,你就会想要一把铲子,并且值得付出努力才能得到铲子(在这个类比中,缓冲区就是铲子)......这个故事的寓意是,你当您要对数据源进行大量调用时,应该使用缓冲区。
这篇文章可能会更好,更详细地解释它...... http://pzemtsov.github.io/2015/01/19/on-the-benefits-of-stream-buffering-in-Java.html
这里是 Oracle 网站的链接,解释了 PrintWriter 类的工作原理。https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html
这是一个工作示例...如果您使用 System.in 实例化该对象,则可以使用 PrintWriter 类写入控制台。确保还传入“true”,以便它自动刷新。
import java.io.*;
public class PrintWriterExample
{
public static void main(String args[]) throws IOException
{
int [] id = {12456, 323, 345, 3423};
String [] firstName = {"John", "Paul", "George", "Ringo"};
String [] lastName = {"Lennon", "McCartney", "Harrison", "Star"};
PrintWriter outFile = new PrintWriter(System.out, true);
String format = "ID: %5d (%s, %s)\n";
for (int i=0; i<id.length; i++)
{
outFile.printf(format, id[i], firstName[i], lastName[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
ID: 12456 (John, Lennon)
ID: 323 (Paul, McCartney)
ID: 345 (George, Harrison)
ID: 3423 (Ringo, Star)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62704 次 |
| 最近记录: |