Показатель производительности BufferedReader против BufferedInputStream - PullRequest
0 голосов
/ 28 марта 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 06 октября 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()
2 голосов
/ 28 марта 2012

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

...