Java: InputStream слишком медленный для чтения огромных файлов.

Мне нужно прочитать посимвольно файл размером 53 МБ. Когда я делаю это на С++ с помощью ifstream, это выполняется за миллисекунды, но с использованием Java InputStream это занимает несколько минут. Это нормально, что Java такая медленная, или я что-то упустил?

Также мне нужно доделать программу на Java (она использует сервлеты, из которых я должен вызывать функции, обрабатывающие эти символы). Я подумал, может быть, написать часть обработки файлов на C или C++, а затем использовать Java Native Interface для взаимодействия этих функций с моими Java-программами... Как вам эта идея?

Может ли кто-нибудь дать мне еще какой-нибудь совет... Мне серьезно нужно прочитать файл быстрее. Я пытался использовать буферизованный ввод, но он все равно не дает производительности, даже близкой к C++.

Отредактировано: мой код состоит из нескольких файлов, и он очень грязный, поэтому я даю краткий обзор

import java.io.*;

public class tmp {
    public static void main(String args[]) {
        try{
        InputStream file = new BufferedInputStream(new FileInputStream("1.2.fasta"));
        char ch;        
        while(file.available()!=0) {
            ch = (char)file.read();
                    /* Do processing */
            }
        System.out.println("DONE");
        file.close();
        }catch(Exception e){}
    }
}
13
задан pflz 6 May 2012 в 20:23
поделиться