2010-08-28 2 views
2

Я делаю то, что кажется простым прочтением из файла данных, и он принимает за то, что он когда-либо падал. (И это, я имею в виду 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 строку ввода.

+0

Это зависит от входного файла. Насколько оно большое? –

+0

@dark_charlie «51 строка ввода» –

+4

Вы пытались измерить время в своем приложении? Тогда вы проигнорируете стоимость запуска java runtime. «java -version» занимает 0,1 с на моей машине. – vanza

ответ

4

Просто гадать, но, вероятно, много времени используется только для запуска jvm.

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

+0

Спасибо. Просто приурочен к ней в самой программе, и она завершается в 1 мс. Все остальное время, по-видимому, проводится в системе. – fishman

1

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

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

Смежные вопросы