gpt4 book ai didi

java - 关于Java IO性能调优的问题

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:35 25 4
gpt4 key购买 nike

我正在尝试优化一个基于 Web 的应用程序,该应用程序对流进行大量写入。代码是这样的---

 StringWriter stringWriter = new StringWriter(1024);
PrintWriter printWriter = new PrintWriter(stringWriter);

然后这个 printwriter 被用来在几个地方做很多写操作,比如 --

 printWriter.write("set interface ethernet0 zone Trust");

我想通过将 printwriter 包裹在 bufferedwriter 周围来优化几个写操作。所以我计划如下更改第 1 行和第 2 行。请让我知道以下方法是否正确 --

StringWriter stringWriter = new StringWriter(1024);
// go for bufferedwriter instead of printwriter.
BufferedWriter bufWriter = new BufferedWriter(stringWriter, 8*1024);

此外,我认为现在我可以直接替换 write 方法,如 --

printWriter.write("set interface ethernet0 zone Trust");

替换为

bufWriter.write("set interface ethernet0 zone Trust");

请告诉我这是否正确,或者我是否需要使用 BufferedWriter 的任何重载方法来充分利用 BufferedWriter。

谢谢,开发

最佳答案

由于 StringWriter 根据定义写入字符串缓冲区(在内存中),将其包装到 BufferedWriter 中应该不会对性能产生任何影响。 (由于额外的间接级别,它实际上可能会使您的代码变慢一些 - 尽管这个 will 可能 most likely 被 JIT 编译器优化掉了。)

后者在文件 I/O 中很有用,其中一个大写入往往比多个小写入快得多。

为什么你认为你需要调整这段代码?可能值得通过以下内容

关于性能调整的一般指南

  1. 不要这样做(你确定你需要它吗?大多数时候你实际上不需要)。
  2. 先不要做(相关经典名言:"Premature optimization is the root of all evil" by Donald Knuth)。
  3. 不要优化您认为速度慢的代码 - 使用性能分析器衡量性能以找出实际的瓶颈。
  4. 任何更改后再次测量以验证您确实显着提高了性能(例如:很容易做出“巧妙”的更改,但不会产生任何影响,甚至会降低性能) .

关于java - 关于Java IO性能调优的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713153/

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