JDK9团队致力于帮助我们删除非公共依赖项(使用jdeps
)。我使用Unsafe
类来更快地访问String
内部char
数组 - 而不创建新的char数组。如果我想放弃对Unsafe
类的依赖,我需要动态加载它并使用反射调用Unsafe.getObject
和其他方法。
现在我想知道表演:现在当我使用Unsafe
的反射时,它是如何与String.toCharArray
表演相匹配的?继续使用Unsafe
是否有意义?
我假设JDK> = 7。
修改
是的,我完全知道每个人都可以使用例如JMH编写这些测试;但是需要花费大量时间来测量不同的输入和不同的VM版本(7,8)。所以我想知道是否有人已经这样做了;因为许多图书馆正在使用Unsafe
。
答案 0 :(得分:3)
char[]
数组,请参阅JEP 254。也就是说,String
将是您唯一的选择。toCharArray()
API。但既然你问这个问题,我想你不是。在我的笔记本电脑上,Unsafe
以25 纳秒完成100个字符串,即我可以每秒拨打4000万次!你真的有这种工作量吗?toCharArray()
不同,它们是 public ,支持和安全 API。