Почему просто чтение маленького файла занимает так много времени? - PullRequest
2 голосов
/ 29 августа 2010

Я делаю то, что похоже на простое чтение из файла данных, и это всегда требует фрика. (И под этим я подразумеваю 300 мс.) Это код вопроса:

BufferedReader f = new BufferedReader(new FileReader("input.txt"));
StringTokenizer st = new StringTokenizer(f.readLine());
int var1 = Integer.parseInt(st.nextToken())
int var2 = Integer.parseInt(st.nextToken());
Integer[][] people = new Integer[var1][];
for(int i = 0; i < var2; i++)
    f.readLine();
for(Integer i = 0; i < var1; i++)
{
    StringTokenizer line = new StringTokenizer(f.readLine(), " \t\n\r\f,");
    line.nextToken();
    Integer[] list = new Integer[line.countTokens()];
    for(int j = 0; j < drinks.length; j++)
        list[j] = Integer.parseInt(line.nextToken());
    people[i] = list;
}

И это соответствующий time вывод:

sammysmbp:fridgemadness_lean sfishman$ time java fridgemadness

real    0m0.311s
user    0m0.277s
sys  0m0.056s

Это только я или это действительно, очень медленно. В этом примере он только проходит 51 строку ввода.

Ответы [ 2 ]

4 голосов
/ 29 августа 2010

Просто догадываюсь, но, вероятно, большая часть времени расходуется только на запуск jvm.

Распечатайте временную метку непосредственно перед и после соответствующего кода. Если мое предположение верно, маленький сервер, принимающий запросы, может помочь сократить время запуска.

1 голос
/ 29 августа 2010

Вам не нужно \ r или \ n в шаблоне, readLine () уже удалила их.

За исключением запуска JVM, большая часть времени будет потрачена на чтение до нужной позиции, если файл вообще длинный. Возможно, текстовый файл строк не является правильной структурой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...