文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
完全泛型共享
补充元数据虽然彻底解决了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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论