Android: быстрый способ разобраться с компенсированными строками - PullRequest
0 голосов
/ 15 мая 2011

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

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

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

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

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

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

1 Ответ

1 голос
/ 15 мая 2011

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

...