【问题标题】:ByteBuddy Performance in HibernateHibernate 中的 ByteBuddy 性能
【发布时间】:2017-08-03 04:43:48
【问题描述】:

我目前正在考虑用 bytebuddy 替换 javassist(主要是出于性能原因)。 作为第一步,我尝试在休眠(5.2.10)中使用 bytebuddy 代理工厂。 不幸的是,代理类的生成现在比以前慢了三倍。

这是预期的吗?我发现的基准 (https://zeroturnaround.com/rebellabs/testing-the-performance-of-4-java-runtime-code-generators-cglib-javassist-jdk-proxy-byte-buddy/) 似乎表明 bytebuddy 应该比 javassist 更快。

我错过了什么吗?

【问题讨论】:

    标签: hibernate byte-buddy


    【解决方案1】:

    自从这篇文章之后,Byte Buddy 变得更加先进并添加了更多功能。添加此类功能的一个不幸的副作用当然是需要时间来处理它们。

    与此早期版本相比,导致性能下降的特性是泛型类型信息的处理。 Byte Buddy 研究泛型类型并且仅仅检查它们是否存在会花费一些额外的时间,即使一个类是非泛型的。此外,为了考虑使用所谓的桥方法的泛型方法覆盖,Byte Buddy 解释了类型层次结构。另一方面,忽略泛型方法的 cglib 可以进行更简单的分析,但在处理可见性桥梁时有时会出错。

    最后,像 cglib 这样的 Byte Buddy 面临着在创建类的时间和创建最高效的代码之间进行权衡。这种权衡强烈倾向于在 Byte Buddy 接近基线的情况下创建高效代码,即它本身不会增加任何开销,而只会增加正在添加的代码的开销,这对于 cglib 来说是不正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      相关资源
      最近更新 更多