子线程渲染技术和AC自动机

简介: 子线程渲染技术和AC自动机

子线程渲染技术

原因:在玩家较多,且时装坐骑等差异化较大时,客户端帧率低,卡顿明显

思路:将渲染放在子线程进行,使逻辑处理和渲染可以同时进行,提高并行处理能力,提高客户端运行效率,提升帧率,缓解卡顿

方案:1、创建一个新的线程专门用来处理渲染逻辑          


          2、将主线程每一种渲染函数和一些设置渲染状态的方法都定义成一种渲染类型        


          3、每一个渲染类型对应一个渲染结构,包含渲染的数据和render方法          


           4、用std::array<std::vector<renderinfo*>, 2>这种结构来存储渲染数据,这样分开逻辑线程和渲染线程的访问冲突,逻辑线程向一个vector中写入数据,渲染线程从另一个已经写好的vector中读取数据执行渲染          


            5、逻辑线程和渲染线程执行速度会有差异,需要通过std::mutex互斥量来使两个线程协同工作(设置某个线程等待以及唤醒)


587a3cee84ed48fca0b2f4512e48b26b.png

问题3:游戏最小化、修改分辨率、锁屏等操作,恢复后显示异常 原因:这些操作会导致DX设备丢失,需要通过TestCooperativeLevel获得当前设备情况,正确调用ResetDevice()函数


注意:1、保证DX渲染接口的调用都在渲染线程执行          


         2、对渲染有影响的成员变量要区分逻辑线程和渲染线程      


         3、渲染顺序和以前主线程保持一致


结果:客户端机器人身上时装是随机的,不会移动、不释放技能        


          添加1024个机器人      以前帧数  21左右    现在帧数   45左右          


         添加2048个机器人      以前帧数  10左右    现在帧数   22左右


2。屏蔽字匹配优化:AC自动机(多模字符串匹配算法)


原因:屏蔽字是采用字符串匹配方式做的,屏蔽字列表文件就有好几个,并且有的文件屏蔽字字符串有接近2W行,效率低


算法:1、构造字典树            


          2、构造适配指针        


          3、匹配过程

image.png

结果:1、AC自动机的匹配效率要高很多      

          2、创建AC自动机所需要的内存较大 是一种空间换时间的算法

         

关于AC自动机的一些链接:

AC自动机(详解)_tweatherm的博客-CSDN博客_ac自动机

相关文章
|
9月前
|
存储 人工智能 安全
AICoding实践:从Prd到代码生成
本文探讨了在AI技术推动软件工程范式变革的新阶段,如何通过构建增强型AI编程系统(codefuse)实现从需求到代码的端到端自动生成。
2854 21
AICoding实践:从Prd到代码生成
|
3月前
|
人工智能 搜索推荐 安全
企业如何搭建AI智能体工作流?从需求输入到人工审核的六层设计
企业落地AI智能体,难点不在调用大模型,而在构建稳定、可复用、可审核的业务流程。本文提出六层工作流模型:需求输入→信息整理→AI处理→人工审核→标准输出→数据复盘,覆盖内容运营、客服、销售等场景,助力个人与企业从“工具使用者”升级为“流程设计者”。(239字)
|
5月前
|
人工智能 自然语言处理 API
阿里云百炼 Token Plan 是什么?与 Coding Plan 有何区别?
阿里云百炼推出Token Plan(团队版)与Coding Plan(个人版)两大AI订阅服务:前者按Credits统一计费,支持多模态模型及企业级管理;后者按请求次数计费,专注编程场景,成本直观。选对方案,提效更精准。
2169 5
|
编解码 数据处理 API
如何用阿里云OSS对图片和视频进行数据处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。OSS提供了丰富的功能,如图片的缩放、裁剪、旋转和水印添加等,用户只需在图片URL后附加处理参数即可实现自动化处理。同时,OSS还支持自定义样式模板,便于批量操作。对于视频处理,OSS支持转码、截图、拼接等功能,满足多终端播放需求。通过OSS的API和SDK,开发者可以方便地集成这些功能,提升数据管理效率。
|
9月前
|
Java Spring 容器
Spring Boot配置的优先级?
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、.yml、.yaml)和外部配置(如系统属性、命令行参数)。优先级由高到低为:命令行参数 &gt; 系统属性 &gt; .properties &gt; .yml &gt; .yaml。自动配置核心是@SpringBootApplication中的@EnableAutoConfiguration,通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类,并结合@Conditional条件注解按需注入Bean。
|
机器学习/深度学习 人工智能 算法
AI学习
学习AI涉及编程语言(如Python)、数学基础、AI理论(包括机器学习、深度学习)、实践应用(如使用TensorFlow)、案例研究、伦理法律及持续跟进最新技术。从基础知识到项目实战,全面掌握AI需要扎实的理论与实践经验,关注领域发展,并具备跨学科协作能力。对于个人职业发展和适应未来社会,AI技能至关重要。
1317 3
|
缓存 数据中心 网络架构
5个减少网络延迟的简单方法
高速互联网对工作与娱乐至关重要,延迟和断线会严重影响效率和体验。本文探讨了导致连接缓慢的三个关键因素:吞吐量、带宽和延迟,并提供了减少延迟的实用方法。包括重启设备、关闭占用带宽的程序、使用有线连接、优化数据中心位置以及添加内容分发网络 (CDN) 等策略。虽然完全消除延迟不可能,但通过这些方法可显著改善网络性能。
4814 7
|
网络协议 网络架构
【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
955 1
|
存储 人工智能 开发框架
认识什么是互联网数据中心(IDC)
互联网数据中心(IDC)拥有高速带宽、高性能网络与安全环境,提供服务器托管、租用等服务。它是数据存储与流通的核心,支持互联网内容提供商、企业和各类网站的大规模、高质量需求。机房维护涵盖多方面,确保设备稳定运行。中国IDC行业快速发展,机房按星级划分,从一星到五星,标准逐步提升,体现国家信息基础设施的进步与成熟。国际上,Uptime Institute的Tier等级进一步规范了数据中心的可用性与可靠性标准。
3866 6