264 字
1 分钟
Java输入输出优化
Scanner 和 BufferedReader 对比
在10万整数的读入场景下BufferReader比Scanner快约5到8倍 而在100万的整数读入场景下则快10倍以上 纯字符的读入也快三到五倍
为什么快这么多?
- 缓冲大小
Scanner内部缓冲区默认 1 KBBufferedReader默认 8 KB,可手动更大
- 解析逻辑
Scanner使用正则表达式分割、类型校验,heavy parsingBufferedReader只读原始字符,手动Integer.parseInt极简
- 同步开销
Scanner额外同步、越界检查、类型转换BufferedReader只做系统调用 → 用户空间解析
结论与使用建议:
- 数据量小(几千以内)、图省事时用
Scanner完全没问题; - 数据量达到 10⁵ ~ 10⁶ 时务必改用
BufferedReader+StringTokenizer(按空白切分一行)+Integer.parseInt,输出用BufferedWriter或PrintWriter,大量输出记得最后flush(); - 频繁拼接输出时用
StringBuilder攒起来一次性输出,减少 IO 次数,这一点在 Trie、并查集等大量查询的题目中提速明显。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
离散化与区间合并
算法 离散化(排序去重 + 二分映射)与区间合并的入门讲解与 Java 实现,处理值域巨大但实际用到的点很少的场景。
2
树形DP与记忆化搜索
算法 树形 DP(没有上司的舞会)与记忆化搜索(最长滑雪轨迹)的入门讲解与 Java 实现。
3
贪心算法
算法 贪心算法的核心思想、解题步骤与经典的活动选择问题讲解,并给出 Java 实现。
4
双指针算法与位运算
算法 双指针算法与位运算的核心思想与例题,包括用双指针将 O(n²) 暴力优化为 O(n) 的常见套路,以及 lowbit 等常用位运算技巧。
5
二分图
算法 二分图的定义与判定(染色法),以及匈牙利算法求最大匹配的入门讲解与 Java 实现。