我正在编写一个读取文件的程序(使用自定义缓冲区,8KB),然后在该缓冲区中找到一个关键字.由于Java提供了两种类型的流:字符和字节,我使用它们byte[]和char[]缓冲来实现它.
我只是想知道,这将是对性能更快,更好,因为char是2 byte和使用时Reader阅读起来char[]时,Reader将执行转换从后byte到char,我认为可以把它比仅使用较慢byte[].
使用字节数组会更快:
您没有字符到字符解码步骤,这至少是一个复制循环,可能更多取决于用于解码的字符集.
字节数组占用的空间更少,因此可以节省GC /初始化中的CPU周期.
然而:
除非您正在搜索大文件,否则差异不太可能很大.
如果输入文件未以8位字符集编码,则字节数组方法可能失败.即使它有效(与UTF-8和UTF-16一样),匹配跨越缓冲区边界的字符也存在潜在问题.
(字节处理适用于UTF-8和UTF-16的原因是编码可以很容易地区分第一个单元(字节或短)和编码字符的后续单元.)
| 归档时间: |
|
| 查看次数: |
6742 次 |
| 最近记录: |