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());
Приведенный выше код печатаетПочему GZIPInputStream занимает довольно много времени?
SWB===1
SWB===4
SWB===27052
Output String lenght : 1750825
Но сжатие той же строки занимает довольно короткий промежуток времени (менее 100 мс). Что я здесь делаю неправильно? (Кроме моей плохой способ отладки комментариев)
Попробуйте использовать 'StringBuilder' вместо' outStr + = line'. – Jack
Я нашел, что это работает быстрее: http://stackoverflow.com/a/10572491/393639 – dinesh707