== 1. read() calls that reach the underlying InputStream (first 50 MB of the file) == InputStreamReader.read() per char underlying calls= 6,104 avg bytes/call= 8,192.0 BufferedReader(8192).read() per char underlying calls= 6,104 avg bytes/call= 8,192.0 BufferedReader(8192).readLine() underlying calls= 6,104 avg bytes/call= 8,192.0 BufferedReader(65536).readLine() underlying calls= 6,104 avg bytes/call= 8,192.0 BufferedReader(1).readLine() underlying calls= 6,104 avg bytes/call= 8,192.0 == 2. time to consume the whole file (3 passes each; indicative, same JVM) == pass 1 InputStreamReader.read() per char 6,493 ms pass 1 BufferedReader.read() per char 4,902 ms pass 1 BufferedReader.readLine() 206 ms pass 2 InputStreamReader.read() per char 7,373 ms pass 2 BufferedReader.read() per char 4,948 ms pass 2 BufferedReader.readLine() 279 ms pass 3 InputStreamReader.read() per char 7,395 ms pass 3 BufferedReader.read() per char 5,077 ms pass 3 BufferedReader.readLine() 269 ms