返回介绍

博客

帮助文档

完全泛型共享

发布于 2024-08-03 14:42:57 字数 3873 浏览 0 评论 0 收藏 0

补充元数据虽然彻底解决了AOT泛型问题,但补充元数据会导致需要随包携带或者热更新下载补充元数据dll,导致包体增大或者增加了热更新时间。 加载补充元数据不仅导致内存占用明显增加,还增加了启动时间。对于微信小游戏这些对包体和内存要求严苛的场合,这是一个影响较大的问题。 另外,被补充的泛型函数以解释方式执行,还降低了运行性能。

HybridCLR支持full genric sharing后,不再需要补充元数据,简化了工作流,较好地解决了补充元数据的以上缺点。

支持的版本

支持 Unity 2021及更高的LTS版本。

原理

旧的泛型共享技术只能对class类型进行泛型共享。自2021.3.x LTS版本起,il2cpp已经支持完全泛型共享(full generic sharing)技术, 即泛型参数无论是任何类型(包含值类型)都可以共享。HybridCLR利用这个机制实现了不需要补充元数据,也可以完美支持AOT泛型。

设置

:::warning

faster (smaller build)会对泛型函数性能有较大影响(15%甚至更高),因此建议不要开启这个选项。

如果是2021版本并且没有内存压力的情况下,建议仍然使用补充元技术来解决泛型问题。

:::

  • 2020版本不支持完全泛型共享
  • 2021版本需要设置 IL2CPP Code Generation选项为faster(smaller build)
  • 2022版本默认开启完全泛型共享,无法关闭。如果设置 IL2CPP Code Generation选项为faster(smaller build)则能进一步减少包体。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文