Java 在BufferedInputStream中包装System.in是否可以提高某些JDK';s
当使用System.in读取标准输入时,使用BufferedInputStream对其进行包装是否可以提高性能,或者它是否已经被缓冲 与扫描仪结合使用时的示例Java 在BufferedInputStream中包装System.in是否可以提高某些JDK';s,java,Java,当使用System.in读取标准输入时,使用BufferedInputStream对其进行包装是否可以提高性能,或者它是否已经被缓冲 与扫描仪结合使用时的示例 Scanner in = new Scanner(System.in); //or Scanner in = new Scanner(new BufferedInputStream(System.in)); 没有显式说明它是否已缓冲 查看我的x64 Linux 1.8.0_111 java.lang.System#initializeS
Scanner in = new Scanner(System.in);
//or
Scanner in = new Scanner(new BufferedInputStream(System.in));
没有显式说明它是否已缓冲
查看我的x64 Linux 1.8.0_111 java.lang.System#initializeSystemClass的源代码表明它是缓冲的
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
...
setIn0(new BufferedInputStream(fdIn));
是否有任何平台/jdk实现,其中System.in是无缓冲的,包装它是有意义的?好的,快速调试一下:
System.out.println(System.in.getClass());
类java.io.BufferedInputStream
因此,将
系统包装在中不会有帮助,因为它已经是一个缓冲的输入流。这可能取决于操作系统,因为我还没有找到一个实际的JLS/etc规范来说明中的系统的输入流将始终是什么。会有什么影响吗?很可能不是
会有帮助吗?视情况而定,但可能不是
请记住,操作系统在这里也有发言权。永远不要忘记JVM只是整个组件堆栈中的一层。换句话说:你的Linux内核可能在幕后做着各种各样的事情——所以你的应用程序代码在这里做什么并不重要 这要看情况而定。你打字有多快?