android: бърз начин за справяне с компресирани низове

Имам няколко компресирани низа (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.

Някой знае ли начин за постигане на горните опции? или има по-добър начин, благодаря много.


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


Отговори (1)


Може да се интересувате от използването на DeflatorOutputStream and InflatorInputStream вижте Бързо компресиране в Java?

person Ahmad Kayyali    schedule 15.05.2011