当前位置: 首页 > 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.gsyq.cn/news/99675.html

相关文章:

  • 使用cmake构建Cplusplus版运行时库-–-behaviac
  • HyperLPR3 车牌识别(python3)
  • 二、python语法基础
  • pytesseract 中英文 识别图片文字
  • 马上2026年了,copilot还能用吗?
  • 智能体开发系统学习实践
  • 《终极金钱心智》
  • 第13章:项目资源管理【章节重点】
  • 第14章:项目沟通管理【章节重点】
  • AI 如何从配置历史与变更日志中推理出“变更引发的故障”——自动化根因分析的因果推理引擎
  • 234回文链表
  • 22、正则表达式全解析:从基础到高级应用
  • 推荐一种并发线程中资源同步常用方法
  • 当AI芯片不再性感:博通的高增长,为何成了催命符?
  • ASUS路由器更新Merlin固件
  • 直接开整!咱今天唠唠怎么用维纳过程预测设备寿命,手把手带代码那种。准备好你的Python环境,咱们从数据生成一路干到参数更新
  • 贾子智慧商业化——现代创业致胜完整框架 | Kucius Wisdom Commercialization— A Complete Framework for Modern Entrepreneure
  • 量化交易的思路
  • JS核心语法
  • JS函数语法(重点)
  • 2025年12月贵州医养结合康养机构推荐,全场景真实调研・口碑数据化解析! - 品牌鉴赏师
  • Kafka-Eagle 安装 - 实践
  • C#+VisionMaster联合开发(五)_全局相机
  • NCHU-OOP-题目集4~5以及课堂测验总结 - AC
  • 2025年12月三亚财税,海口财税,海南财税公司推荐:政策适配性与服务实力测评指南 - 品牌鉴赏师
  • 北京集训日记
  • 达梦数据库--数据备份还原切换数据库
  • 贾子战略理论体系(一套兵法、两个七十二、三大定律)| Kucius Strategic Theory (One Art of War, Two Seventy-Twos, Three Core Law
  • LED照明技术趋势解读与选购关键参数指南
  • vue项目node版本过高导致vue-cli项目无法运行