sme*_*its 6 java performance zip nio large-data
我正在从事一个处理大量数据的项目。我有很多(数千个)zip 文件,每个文件都包含一个简单的 txt 文件,其中包含数千行(大约 80k 行)。我目前正在做的事情如下:
for(File zipFile: dir.listFiles()){
ZipFile zf = new ZipFile(zipFile);
ZipEntry ze = (ZipEntry) zf.entries().nextElement();
BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
...
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以逐行读取文件,但它确实太慢了。鉴于需要读取大量文件和行,我需要以更有效的方式读取它们。
我一直在寻找不同的方法,但我还没有找到任何东西。我认为我应该使用适用于密集型 I/O 操作的 java nio API,但我不知道如何将它们与 zip 文件一起使用。
任何帮助将不胜感激。
谢谢,
马可
我有很多(数千个)zip 文件。每个压缩文件约为 30MB,而 zip 文件内的 txt 约为 60/70 MB。使用此代码读取和处理文件需要花费很多时间,大约 15 个小时,但这取决于情况。
让我们做一些粗略的计算。
假设您有 5000 个文件。如果处理它们需要 15 小时,则相当于每个文件约 10 秒。每个文件约为 30MB,因此吞吐量约为 3MB/s。
ZipFile这比解压东西的速度慢一到两个数量级。
要么是磁盘有问题(它们是本地磁盘还是网络共享磁盘?),要么是实际处理占用了大部分时间。
确定的最佳方法是使用分析器。
| 归档时间: |
|
| 查看次数: |
17597 次 |
| 最近记录: |