读/写效率

时间:2013-11-09 19:21:09

标签: java performance scala io profiling

我有一个SCALA(+ JAVA)代码,它以一定的速率读写。分析告诉我代码中的每个方法执行的时间。如何测量我的程序是否达到其最高效率?为了使我的代码经过优化,以便以给定配置的最大速度进行读取。我知道这是特定于硬件的,并且因机器而异。如果有一个短路来衡量过程。如果我的程序是由硬件以最快的速度读写。 (我正在使用FileWriter和BufferWriter。)

1 个答案:

答案 0 :(得分:1)

根据描述给出您最好的选择可能是试验。您可以衡量的是:

  • 更改缓冲区大小(当我尝试这个时,这对我没有帮助)
  • 切换到NIO(可能对大文件有帮助)
  • 缓存您读取的数据(可能对小文件有帮助),如果其中包含许多文件,则缓存目录内容。当文件夹中的文件数量增加时,打开文件速度会降低。

确保代码分析代码没有问题的一种可能技术是获取方法的CPU时间分配树,并在大多数情况下扩展执行路径。如果所有这些路径都转向Java标准库,那么您可能会达到最佳性能。

<强>更新

其他一些事情&amp;你提供的hrof技术。

  • 使用剖析器或其他一些技术(我更喜欢秒表,因为它们可以提供更稳定和更逼真的结果),你需要找到你的瓶颈。
  • 大多数IO都可以优化使用单个缓冲区 - 这对于Guava或Apache Commons IO来说不那么痛苦。
  • 但是,如果您在序列化链中使用Jackson,那么您可以做的事情就不多了,如果这是您的瓶颈。更改算法?
  • 有慢人(与原生文件系统IO相比) - 即Formatter s,String.format非常慢,杰克逊等。
  • IO存在典型的慢速操作 - 即缓冲区分配,字符串连接,分配的char[]缓冲区太多是IO优化的气味。