0


0

Mesure des performances de BufferedReader Vs BufferedInputStream

Récemment, j’ai modifié mon code pour

  • En prenant le formulaire de saisie STDIN, je suis passé de «Scanner» à BufferedInputStream.

  • J’ai également lu sur "BufferedReader" qui prend l’entrée de tout InputStreamReader. Ce InputStreamReader peut être utilisé avec` System.in` pour prendre l’entrée STDIN.

  • BufferedInputStream a la méthode` read () `, qui doit en outre être analysé en fonction de l’objectif.

Dans mon cas, je dois d’abord prendre un entier (disons n) en entrée de STDIN, après quoi une boucle` for 'prendra n chaînes en entrée. Ces chaînes ont au maximum 1 000 000 caractères.

La question est: Lequel parmi Scanner,` BufferedInputStream` et BufferedReader fonctionne mieux pour mon objectif?

2 Answer


2


Le scanner a été conçu pour simplifier l’acceptation des paramètres d’entrée au moment de l’exécution par l’utilisateur. C’est l’équivalent java de scanf () / getc () / cin. Les «lecteurs sont utilisés pour lire les données de caractères», les flux pour les données en streaming. Le scanner est le mieux adapté à votre objectif. Comme il est simple à coder et à utiliser.


2


J’utiliserais un BufferedReader dans votre cas. Ce sera beaucoup plus rapide que Scanner car vos chaînes ont beaucoup de caractères.

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()