news 2026/1/2 1:02:23

优化及性能-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
优化及性能-–-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毫秒。(具体数据会因为测试环境的不同有差异)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/30 13:35:28

练题100天——DAY26:汇总区间+丢失的数字+数组交集

今天又又是三道题,难度范围:★★~★★★。难度完全是凭个人做的感觉标的,题还是得自己做了才知道。 100天也已经过1/4了,非常之不错啊,希望这些记录能让我对这些题的理解更深,当然,也希望能对你…

作者头像 李华
网站建设 2025/12/30 15:52:38

当AI芯片不再性感:博通的高增长,为何成了催命符?

出品I下海fallsea撰文I胡不知2025年12月12日16点03分,纳斯达克交易大厅的电子屏突然泛起红光。博通(AVGO.US)的股价在连续30分钟的抛售潮中直线下坠,从开盘402美元跌至357美元,单日跌幅最终定格在11.2%,市值…

作者头像 李华
网站建设 2025/12/28 18:59:24

Vibe Coding:AI驱动的编程新范式

Vibe Coding:AI驱动的编程新范式与MaynorAPIPro的完美结合 在2025年,人工智能技术迅猛发展,编程领域也迎来了一场革命。其中,“Vibe Coding”作为一种新兴的AI辅助软件开发技巧,正迅速流行开来。这种方法由AI专家Andr…

作者头像 李华
网站建设 2025/12/27 10:40:16

AI 数字孪生工厂:西门子与中信特钢的实践,如何降本 11%?

一、行业痛点:特钢制造的降本困局钢铁行业作为重工业支柱,长期面临 "三高两低" 的发展瓶颈:高能耗、高排放、高成本与低效率、低附加值。中信特钢作为全球特钢领军企业,其生产流程涵盖冶炼、连铸、轧制等十余个核心环节…

作者头像 李华
网站建设 2025/12/29 18:50:14

Spring IoC的实现机制是什么?

大家好,我是锋哥。今天分享关于【Spring IoC的实现机制是什么?】面试题。希望对大家有帮助; Spring IoC的实现机制是什么? 超硬核AI学习资料,现在永久免费了! Spring IoC(Inversion of Contro…

作者头像 李华
网站建设 2026/1/1 19:35:23

耐用折叠屏手机推荐:三星Galaxy Z TriFold如何破解“折痕与耐用”难题?

当折叠屏手机从概念产品走向大众市场,消费者最关心的问题之一就是耐用性。毕竟,折叠屏设备多出了复杂的机械结构和柔性屏幕,这些部件在日常使用中面临更多挑战。那么,如今的折叠屏手机在耐用性方面达到了什么水平?三星…

作者头像 李华