Как улучшить производительность GZIPJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как улучшить производительность GZIP

Сообщение Anonymous »

В настоящее время у меня есть проблема: этот фрагмент кода будет вызываться >500 тысяч раз. Размер сжатого байта[] составляет менее 1 КБ. Каждый раз при вызове метода необходимо создавать все потоки. Поэтому я ищу способ улучшить этот код.

Код: Выделить всё

private byte[] unzip(byte[] data) throws IOException, DataFormatException {

byte[] unzipData = new byte[4096];

try (ByteArrayInputStream in = new ByteArrayInputStream(data);
GZIPInputStream gzipIn = new GZIPInputStream(in);
ByteArrayOutputStream out = new ByteArrayOutputStream()) {

int read = 0;
while( (read = gzipIn.read(unzipData)) != -1) {
out.write(unzipData, 0, read);
}

return out.toByteArray();
}
}
Я уже пытался заменить ByteArrayOutputStream на ByteBuffer, но на момент создания я не знал, сколько байтов мне нужно выделить.
Я уже пытался заменить ByteArrayOutputStream на ByteBuffer, но на момент создания я не знал, сколько байтов мне нужно выделить.
Я уже пытался заменить ByteArrayOutputStream на ByteBuffer, но на момент создания я не знаю, сколько байтов мне нужно выделить.
p>
Кроме того, я пытался использовать Inflater, но наткнулся на проблему, описанную здесь.
Есть еще идеи, что я мог бы сделать, чтобы улучшить исполнение этого код.
UPDATE#1
  • Может быть, эта библиотека кому-нибудь поможет.
    Также существует открытая ошибка JDK.
UPDATE#2
  • Ошибка JDK закрыта как дубликат. Видите, теперь JDK-CSR ориентирован на JDK 25.


Подробнее здесь: https://stackoverflow.com/questions/325 ... erformance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»