当前位置: 首页 > news >正文

优化及性能-–-behaviac

原文

优化及性能

宏BEHAVIAC_RELEASE定义的时候是最终版,BEHAVIAC_RELEASE没有定义的时候是为开发版。

  • 在debug版中,BEHAVIAC_RELEASE缺省下没有定义的。诸如logging、socketing、热加载等开发功能是有效的。可以通过behaviac::Config::IsLogging和behaviac::Config::IsSocketing来控制是否要Log到文件或是否与编辑器的连接。
  • 在release版中,BEHAVIAC_RELEASE缺省是有定义的。诸如logging、socketing、热加载等开发功能都是没有定义的。
BEHAVIAC_RELEASE缺省下是否定义的说明

BEHAVIAC_RELEASE缺省下是否定义可以参考文章《构建说明》。

简单来说对于Cpp,当使用CMake的时候,BEHAVIAC_VERSION_MODE用来控制BEHAVIAC_RELEASE是否定义:

  1. Default:缺省模式是Debug下BEHAVIAC_RELEASE没有定义,而Release下BEHAVIAC_RELEASE有定义
  2. ForceUseDev:强制不定义BEHAVIAC_RELEASE
  3. ForceUseRelease:强制定义BEHAVIAC_RELEASE

而当BEHAVIAC_RELEASE有定义的最终版里,logging和socketing是关闭的,也不支持连接编辑器。

具体可以参考文章《开发功能开关》。

总之,针对效率可以有下述选择:

  1. 定义BEHAVIAC_RELEASE,从而不编译诸如logging、socketing、热加载等开发功能,提供最高效率,也不支持连调功能。
    • C++下,在_config.h中定义BEHAVIAC_RELEASE为1
    • C#下,在Assets目录下的smcs.rsp文件中,定义BEHAVIAC_RELEASE
    • 如果想选择打开或关闭调试功能而不是完全的关闭,则不需要修改任何关于BEHAVIAC_RELEASE的定义,通过behaviac::Config::SetLogging和behaviac::Config::SetSocketing来控制是否打开logging和socketing。
  2. 不使用xml或bson格式,而是使用C++或C#格式
    • C#下,还需要那些在行为树中使用到的Agent的成员都是public的(非public的成员即使通过C#代码访问也需要使用反射系统来进行,会导致GC Alloc以及性能损失)。
overhead

behaviac可以导出xml(bson),或者源码(cpp/c#),源码的效率要优于数据(xml/bson)的执行效率。实际上这里的效率都是指的behaviac本身的overhead,如果提供的方法本身效率很低,运行很慢,behaviac本身的overhead就可以忽略不计了,无论是选用导出何种格式都遇事无补,这个时候,最需要解决的是优化方法的执行效率。

如上图,尽管xml格式是cpp格式的大约2倍,但这个overhead实际上是非常小的,只有0.0000269秒,0.0269毫秒。(具体数据会因为测试环境的不同有差异)。

http://www.cnnetsun.cn/news/53313.html

相关文章:

  • 练题100天——DAY26:汇总区间+丢失的数字+数组交集
  • 当AI芯片不再性感:博通的高增长,为何成了催命符?
  • Vibe Coding:AI驱动的编程新范式
  • AI 数字孪生工厂:西门子与中信特钢的实践,如何降本 11%?
  • Spring IoC的实现机制是什么?
  • 耐用折叠屏手机推荐:三星Galaxy Z TriFold如何破解“折痕与耐用”难题?
  • 前端技术风险防控:以防为主,防控结合
  • 给女神发“在吗”,她回了个表情包是几个意思?—— 硬核探讨TCP 三次握手
  • 入门大模型必知的100个基础问题(附简明答案)
  • vue基于Spring Boot的建筑材料管理系统的应用和研究_ug8y52z3
  • 【大模型】-LangChain--RAG文档系统
  • 探索非线性电液伺服系统的模型自适应反步控制
  • 降AI率就要牺牲文笔?WriterPro第一个不服!实测对比比原文写得还好,这文笔简直绝了
  • 我不是这样
  • 10.8 总结
  • 列车售票|基于springboot 列车售票系统(源码+数据库+文档)
  • AI驱动的手动测试变革:赋能而非替代
  • 【奶茶Beta专项】【LVGL9.4源码分析】09-core-group
  • 网络安全异想天开(不定期更新)
  • 《CAPL脚本实现CANOE工具 Bus-Off自动恢复(含重试机制)》
  • 力扣1965-丢失信息的雇员
  • Flutter 测试全栈指南:从单元测试到黄金路径验证的工程化实践
  • EtherCAT 逐帧报文解析:配置SM/FMMU
  • Springboot连锁火锅店餐饮管理系统h2dg0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Windows系统文件wavemsp.dll丢失或损坏的问题 下载修复
  • Windows系统文件wdi.dll缺失或损坏问题 下载修复
  • 基于风险演进的智能测试策略设计
  • 论文查重焦虑成流量密码?虎贲等考 AI 直接用免费模式,打破行业游戏规则
  • vue基于Spring Boot的高职院校贫困生困难生智慧关爱系统的开发_f0txl8vu
  • AI 写论文哪家强?虎贲等考 AI!毕业论文全链路 “超级哇塞”,开题到答辩一路开挂~