Мера производительности BufferedReader Vs BufferedInputStream

Недавно я изменил свой код на

  • При вводе формы ввода STDIN я перешел от Scanner к BufferedInputStream.
  • Я также читал о BufferedReader, который принимает входные данные от любого InputStreamReader. Этот InputStreamReader можно использовать с System.in для ввода STDIN.
  • BufferedInputStream имеет метод read(), который в дальнейшем необходимо разобрать в соответствии с задачей.

В моем случае сначала мне нужно взять целое число (скажем, n) в качестве входных данных из STDIN, после чего for loop будет принимать n строк в качестве входных данных. Эти строки содержат не более 1 00 000 символов.

Вопрос: какой из Scanner, BufferedInputStream и BufferedReader лучше подходит для моей цели?


person Ravi Joshi    schedule 28.03.2012    source источник
comment
Вы пробовали каждый подход? Самый простой способ выяснить, что работает лучше, — это написать прототип программы и протестировать ее производительность.   -  person beny23    schedule 28.03.2012


Ответы (2)


Сканер был разработан, чтобы упростить прием входных параметров от пользователя во время выполнения. Это java-эквивалент scanf()/getc()/cin. «Чтение» используется для чтения символьных данных, «Поток» — для потоковых данных. Сканер лучше всего подходит для вашей цели. Как это просто кодировать и использовать.

person questzen    schedule 28.03.2012

Я бы использовал BufferedReader в вашем случае. Это будет намного быстрее, чем Scanner, так как ваши строки содержат довольно много символов.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//To get an integer
int N = Integer.parseInt(br.readLine());

//To get a string.
String line = br.readLine()
person Sanchit    schedule 06.10.2012