protobuf-net介绍

海洋_
领域专家: 游戏开发技术领域
2023-01-12 14:42:15

课时名称课时知识点
protobuf-net介绍
...全文
188 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
资源下载链接为: https://pan.quark.cn/s/a93b13c711d5 protobuf-net-gc-optimization 是针对 protobuf-net 的无 GC 优化版本,还提供了一些无 GC 自定义数据结构,以及对 Unity3D 中 C# 代码的各种无 GC 使用方式的测试。 protobuf-net 是 Unity3D 开发中常用的 Google Protocol Buffer 库的 C# 版本,因 C++ 版本不支持各平台动态库构建而被广泛使用,但它在 GC 方面存在问题,尤其在高频率网络通讯的状态同步游戏中 GC 过高,因此进行了彻底优化。 优化效果显著,从优化前后的对比数据看,多个操作的 GC 分配大幅降低,如 TestProtoBuf.Update () 相关操作的 GC 分配从 20.1KB 等降至 0B 左右,TypeModel.Serialize () 和 TypeModel.Deserialize () 的 GC 占比也从 1.6% 降至 0.0%。 优化针对 protobuf-net 产生 GC 的原因进行,包括反射、foreach、装箱、创建新 pb 对象和新字节数组等。采取的方案有去反射,借鉴生成 wrap 文件思想对指定协议 Hook;改写 foreach 遍历方式(Unity5.5 后该问题缓解);通过自定义 ValueObject 类实现无 GC 装箱拆箱;使用对象池获取和回收 pb 对象;用字节缓存池管理字节数组。 此外,还介绍了优化后的工程结构,包括自定义数据结构、测试协议、对象池和装饰器扩展等部分,以及 ProtoBufSerializer 脚本的功能和使用示例。同时,补充了自定义数据结构的内容和测试场景中的关键结论,如自定义结构需实现特定接口避免 GC,委托需缓存等。

1

社区成员

发帖
与我相关
我的任务
社区描述
畅销书作者,著作:《手把手教你3D游戏引擎架构》、《Unity3D实战核心技术详解》,《Cocos2d-x 3.x 图形学渲染技术讲解》等。
社区管理员
  • 海洋_
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧