繁体   English   中英

Java-DataOutputStream writeLong \\ Byte \\ Double \\ Int Speed

[英]Java - DataOutputStream writeLong\Byte\Double\Int Speed

我实现了一个办法写原始的Java类型使用二进制输出文件DataOutputStream的writeX方法,但我观察相对较慢的性能到以前实现60倍于写入通过一个文本文件BufferedWriter

我这样创建输出流:

DataOutputStream outFile = new DataOutputStream(new FileOutputStream("fileLoc"));

我使用这种方法写入这样的流:

public static void writeFunctionPoint (DataOutputStream outFile, FunctFileSortCriterion functPt) throws IOException
{
    outFile.writeLong   (functPt.time);
    outFile.writeBytes  (functPt.dfid);
    outFile.writeDouble (functPt.value);
    outFile.writeInt    (functPt.qualifier);

}   // end method writeFunctionPoint

为什么我的新方法比以前的方法慢得多?

您开始使用BufferedWriter并切换到无缓冲的OutputStream I / O缓冲会对性能产生巨大影响,尤其是在编写大量小片段的情况下。 插入一个BufferedOutputStream

DataOutputStream outFile = new DataOutputStream(
        new BufferedOutputStream(
        new FileOutputStream("fileLoc")));

与您现在所在的位置相比,应该可以大大提高您的速度。 您也可以尝试调整缓冲区大小以稍微调整性能。 但是,我不能说这将与您最初的基于BufferedWriter的实现相比。 我想它至少可以与之媲美,但总体上很难预测性能。 测试至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM