![](/img/trans.png)
[英]Java - writeLong method of DataOutputStream and writing hex
[英]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.