压缩 20M 文件从 30 秒到 1 秒的优化过程
常见的需求场景:
1、前端传递多张图片,然后压缩成一个压缩包再传递出去
2、批量Excel表格导出数据,返回一下文件压缩包
等用于所有增加传递速度和减少网络开销的场景
最常见的文件压缩代码
public static void zipFileNoBuffer() {
File zipFile = new File(ZIP_FILE);
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile))) {
//开始时间
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
try (InputStream input = new FileInputStream(JPG_FILE)) {
zipOut.putNextEntry(new ZipEntry(FILE_NAME + i));
int temp = 0;
while ((temp = input.read()) != -1) {
zipOut.write(temp);
}
}
}
printInfo(beginTime);
} catch (Exception e) {
e.printStackTrace();
}
}
这里找了一张 2M 大小的图片,并且循环十次进行测试。打印的结果如下,时间大概是 30 秒。
fileSize:20M
consum time:29599










网友评论