gpt4 book ai didi

java - 不安全,反射访问与 toCharArray(性能)

转载 作者:行者123 更新时间:2023-11-29 05:04:19 25 4
gpt4 key购买 nike

JDK9 团队努力帮助我们删除非公共(public)依赖项(使用 jdeps)。我正在使用 Unsafe 类来更快地访问 String 的内部 char 数组 - 而无需创建新的 char 数组。如果我想放弃对 Unsafe 类的依赖,我需要动态加载它并使用反射调用 Unsafe.getObject 和其他方法。

现在我想知道性能:现在当我将反射与 Unsafe 一起使用时,它如何匹配 String.toCharArray 性能?继续使用 Unsafe 是否有意义?

我假设 JDK >= 7。

编辑

是的,我完全知道每个人都可以使用例如 JMH 编写这些测试;但是使用不同的输入和不同的 VM 版本 (7,8) 进行测量需要花费大量时间。所以我想知道是否有人已经这样做了;因为许多库都在使用 Unsafe

最佳答案

  1. String 的 Java 9 版本中有可能根本没有支持 char[] 数组,请参阅 JEP 254 .也就是说,toCharArray() 将是您唯一的选择。
  2. 通常你不应该使用Unsafe API,除非你绝对确定它是必要的。但既然你问这个问题,我猜你不是。在我的笔记本电脑上,toCharArray() 在 25 纳秒 内完成了 100 个字符的字符串,也就是说,我每秒可以调用 4000 万次!你真的有这样的工作量吗?
  3. 如果绝对需要,请使用 MethodHandles而不是 Reflection 和 Unsafe。 MethodHandles 与直接字段访问一样快,但与 Unsafe 不同,它们是公共(public)受支持安全 API。

关于java - 不安全,反射访问与 toCharArray(性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com