我正在分析正在加载二进制文件的代码.加载时间约为15秒.
我的大部分加载时间来自加载二进制数据的方法.
我有以下代码来创建我的DataInputStream:
is = new DataInputStream(
new GZIPInputStream(
new FileInputStream("file.bin")));
我把它改成了这个:
is = new DataInputStream(
new BufferedInputStream(
new GZIPInputStream(
new FileInputStream("file.bin"))));
所以在我做了这个小修改之后,加载代码从15秒变为4.
但后来我发现BufferedInputStream有两个构造函数.另一个构造函数允许您显式定义缓冲区大小.
我有两个问题:
>在BufferedInputStream中选择了什么尺寸,它是否理想?如果没有,我怎样才能找到缓冲区的最佳大小?我应该写一些快速执行二进制搜索的代码吗?
>这是我使用BufferedInputStream的最佳方式吗?我最初在GZIPInputStream中拥有它,但是有可以忽略不计的好处.我假设代码现在正在做的是每次需要填充文件缓冲区时,GZIP输入流经过并解码x个字节(其中x是缓冲区的大小).是否值得完全省略GZIPInputStream?它绝对不需要,但使用它时我的文件大小会大大减少.