【发布时间】:2024-04-16 03:00:02
【问题描述】:
考虑竞争性编程的场景,我必须从控制台读取 2*10^5(或更多)数字。然后我使用BufferedReader,或者为了获得更快的性能,我使用自定义阅读器类,它在后台使用DataInputStream。
快速互联网搜索给了我这个。
我们可以将
java.io用于较小的数据流,对于大型流,我们可以使用java.nio。
所以我想尝试java.nio 控制台输入并针对java.io 性能进行测试。
- 是否可以使用
java.nio读取控制台输入? - 我可以使用
java.nio从System.in读取数据吗? - 它会比我目前拥有的输入法更快吗?
任何相关信息将不胜感激。
谢谢✌️
【问题讨论】:
-
“控制台”是指用户输入的内容?在这种情况下,“快”有什么相关性?这就是说 a) 通常,如果首先使用足够大的缓冲区进行读取,
BufferedReader不会加速任何事情。它可以加速错误地从文件中逐字符读取的应用程序,但对于用户真正逐字符键入字符的控制台,BufferedReader会使情况变得更糟。 b)DataInputStream没有理由比普通的InputStream更快。 c) 您可以为 stdin 创建一个Channel,但 NIO 不是灵丹妙药,期待相同的性能。 -
控制台意味着就像在竞争性编程中,我们从标准输入读取,即 System.in,它有大量输入测试用例
-
数字有哪些格式?
-
十进制格式大多像数字一样用空格分隔
标签: java performance optimization java-8 java-io