Android: быстрый способ справиться со сжатыми строками

У меня есть несколько сжатых строк (по 1,5 М каждый), хранящихся в файле. Мне нужно прочитать их и сделать некоторые вычисления на них. В принципе, вот что я сделал:

public static Object fetchRSFB(File inFile) {
    FileInputStream fis = null;
    ObjectInputStream ois = null;
    GZIPInputStream gs = null;
    Object result = null;
    try {
        fis = new FileInputStream(inFile);
        gs = new GZIPInputStream(fis);
        ois = new ObjectInputStream(gs);
        MyBWT.rankArray = (int[]) ois.readObject();
        String str= (String) ois.readObject();
        //do something with the string

Единственная проблема в том, что производительность кода в целом довольно низкая, поэтому я думаю о двух вариантах:

  1. использовать NIO для сопоставления сжатого файла с памятью и сделать вышеописанное со сжатым файлом в памяти (я слышал, что это может быть достижимо, но я понятия не имею, так ли это на самом деле)

  2. Вместо хранения объектов я мог бы просто сохранить сжатую двоичную версию текста, а затем прочитать текст, я слышал, что это может быть быстрее, чем ObjectInputStream.

Кто-нибудь знает способ достижения вышеуказанных параметров? или есть лучший способ, большое спасибо.


person user685275    schedule 15.05.2011    source источник


Ответы (1)


Вам может быть интересно использовать DeflatorOutputStream and InflatorInputStream см. Быстрое сжатие в Java?

person Ahmad Kayyali    schedule 15.05.2011