【发布时间】:2014-10-01 10:39:51
【问题描述】:
System.out.println("Input String length : " + str.length());
System.out.println("SWB==="+sw.getTime());
byte[] bytes = Base64.decodeBase64(str);
System.out.println("SWB==="+sw.getTime());
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
BufferedReader bf = new BufferedReader(new InputStreamReader(gis));
String outStr = "";
String line;
while ((line=bf.readLine())!=null) {
outStr += line;
}
System.out.println("SWB==="+sw.getTime());
System.out.println("Output String lenght : " + outStr.length());
上面的代码打印出来
SWB===1
SWB===4
SWB===27052
Output String lenght : 1750825
但是压缩相同的字符串需要很短的时间(不到 100 毫秒)。我在这里做错了什么? (除了我调试 cmets 的坏方法)
【问题讨论】:
-
尝试使用
StringBuilder而不是outStr += line。 -
我发现这个工作更快:stackoverflow.com/a/10572491/393639
标签: java compression gzip gzipstream gzipinputstream