没有通用的最佳性能方式。charAt
进行边界检查(但是可以进行优化),而toCharArray
则使用了临时空间。
当VM无法消除边界时,使用toCharArray
可能会更快。
有关更多信息,请参见这里PPT 的74-78
页。
在上面的文档中给出了测试和解释。
Q: Should I copy out the char[] array or not? 我是否应该复制char[]数组?
A: If you don’t need performance, both approaches are the question of style. 如果你不关心性能,两种方法只是风格问题。
Q: I care about performance, should I copy out the char[] array? 我关心性能,是否应该复制char[]数组?
A: You should, in non-trivial case. 是,在特殊情况下
Q: What is considered non-trivial case? 什么情况?
A: Non-local control flow, volatile reads, etc. that break commonning. 非本地控制流、易失性读取等会破坏通用性。
Q: This sucks. There is no universal best-performance way? 真糟糕,没有通用的最佳方法?
A: (silence was the answer, and Engineer left enligthened) (没有回复,并且离开 ) == 滚
关于JVM消除边界优化参考:JVM编译优化技术:数组边界检查消除。