多RID分层路径计算性能优化

本文分享自天翼云开发者社区《多RID分层路径计算性能优化》.作者:罗****斌

 针对以上问题和性能分析点,进行了以下优化,分别是:

1)基础探测图按rid分层染色计算所有点到点路径,零拷贝

        萃取整个路径算法需要修改的部分,单独创建一个临时变量用于不可避免的一次路径计算过程中写操作,防止任何一次两点路径计算更改全局基础探测图操作,这样一个频道下任意两点之间路径并按rid分层染色计算路径都可以在一个基础探测图里实现,而不是每次进行两点之间路径计算就拷贝一次基础探测图,赋值及循环耗时非常大。

2)按rid再细粒度拆分路径计算任务

        在之前,最小路径计算单元是点到点之间的路径计算,如果遇到一个点里有多rid,则在计算点到点路径时串行循环计算rid,如果rid很多,则此次路径计算会占用较长cpu时间而无法去处理其它部分。现在对这部分逻辑进行优化,原则就是按rid粒度拆分路径计算单元,挺高并发度,更好的利用协程效应。

3)节点按rid染色分层循环次数缩小至节点个数

        之前在图遍历时实时判断rid归属分层并染色,遍历次数和判断次数是:节点个数*节点个数。现在是在创建的临时变量里遍历节点个数并按rid提前进行分层染色,标记为某种状态,称之为预分层染色,大大减少遍历次数和判断次数。

4)路径计算协程个数及队列大小调整

        随着业务发展,面临的场景也在不断变化,之前的配置是按一个点到点计算一条路径来优化配置的。而现在按rid分层计算则使路径计算量暴增,点到点拆分出的计算任务按rid倍数增长,需要对其并发处理个数喝队列缓存大小进行调整。

 

5)json字段优化

        在两两互探节点较多时,预处理模块处理性能较之前下降明显。如500*500节点场景下,旧版本1.15.0预处理模块耗时是80毫秒,而新版本1.16.0不开启rid计算并且每个节点携带40个rid时耗时变成940秒,下降11倍,有点触目惊心。后分析发现,耗时基本在json.Unmarshal,预处理以往观察也确实在这块耗时较大,这说明没有引入新的函数导致了预处理模块性能下降。对此,仔细查看json.Unmarshal性能火焰图后发现其中在数组创建上消耗很大,联想到最近新增的rid字段并使用数组类型接收,有可能是这块导致。随后把rid字段去除上报1.16.0版本,预处理模块处理耗时瞬间降低到110毫秒,反向证明rid数组是罪魁祸首。

        经过反复思考验证后,把rid字段改为字符串类型性能可到较大提升,预处理模块耗时下降到240毫秒,在多出rid字段处理情况下,性能损耗基本能接受,故新增一个rids字段为字符串类型,删除rid为组数类型字段。

6)路径汇聚优化为两重汇聚

        之前的汇聚是一个协程进行按频道名进行路径汇聚,现在按rid拆分计算任务暴增后处理性能跟不上,导致汇聚队列积压影响路径计算速率,计划对这部分进行多次汇聚优化。增加一层并发汇聚,并发数可配置,进行粗粒度汇聚后降低待汇聚条数,然后再定义一个单协程二层汇聚进行最终汇聚,主动汇聚或者被动汇聚在二层汇聚里判断实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《程序员修炼之道:从小工到专家》

这本书跳出代码本身,揭示了程序员进阶的核心逻辑。“持续学习”与“注重实践”的理念让我警醒,技术迭代飞快,固守旧知只会被淘汰,唯有像打磨工匠技艺般积累,才能筑牢根基。书中“不要重复造轮子”“保持代码整洁”…

博客更新通知!

现在点击 ciallo 可以发梗图了!

2025 年战略解码培训教练最新推荐榜,技术实力与市场口碑深度解析,助力企业突破战略落地瓶颈战略解码落地/战略解码陪跑/战略解码管理/战略解码服务顾问推荐

引言 为精准筛选出能切实助力企业解决战略落地难题的优质培训教练,本次推荐榜测评由企业管理咨询协会联合行业权威专家共同开展,测评周期历时 3 个月,覆盖全国 23 个省市的 120 余家战略解码培训服务机构。测评采用…

接口自动化测试项目实战day3

构建接口自动化框架 接口自动化框架运行载体 :接口自动化测试用例 接口自动化测试用例存储 框架:python3.8+requests+Pymysql+pytest 接口自动化持续集成:git版本管理,远程仓库(gitee GitHub),构建工具(Jenkins) 阅读接…

Channel Sounding 对比AOA优点

Channel Sounding 对比AOA有什么优点? 测量方式不同 Channel Sounding 基于距离测量,使用往返时间(RTT)和相位测距(PBR)技术 AoA 基于方向测量,使用角相位偏移来确定信号的到达角度 应用场景优势 Channel Sounding …

Nordic芯片中C/I co-channel. 参数什么意思呢?

Nordic芯片中C/I co-channel. 参数什么意思呢?C/I co-channel(同频道载波干扰比)是一个射频性能参数,用于衡量接收器在同一频道上抵抗干扰的能力。 根据提供的知识源,C/I co-channel参数表示接收器在同一频道上能…

Allegro丨17.4 手动绘制矩形板框

打开 “Setup - Outlines - Design Outline...”,按如下设置,会同时生成内缩 0.3mm 的“Package Keepin”和“Route Keepin”区域。点击空白处放置板框后,继续点击 OK。手动绘制“Package/Route Keepin/Keepout”区…

【mdBook】6 在持续集成中运行 mdbook - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Allegro丨17.4 导出导入封装与网表

若是中途接手的 allegro 项目文件,建议重新导一遍封装与网表1. 导出封装 (1)新建 “lib” 文件夹,用来存放封装 (2)allegro 打开 “File - Export - Libraries...”(2)设置封装库的路径2. 导出网表 (1)原理图…

2025 年 OKR 培训教练最新推荐榜,技术实力与市场口碑深度解析,助力企业战略落地OKR 落地/OKR 管理/OKR 认证/OKR 目标管理顾问推荐

引言 为精准筛选出能切实助力企业 OKR 落地的优质培训教练,本次推荐榜测评由企业管理咨询协会牵头,联合国内 10 余家权威商学院共同开展。测评过程严格遵循 “三维九项” 评估体系,从技术实力、服务成果、市场口碑三…

nrf52840 USB Mass Storage 通信原理是什么?

nrf52840 USB Mass Storage 通信原理是什么? 当主机请求读写操作时,设备通过USB协议接收命令。 设备解析命令后,通过SPI协议与SD卡进行数据交换。 数据从SD卡读取后,通过USB协议传输回主机,或从主机接收数据后写入…

Nordic 芯片如何快速调整PWM 占空比生效?

NRF52840 芯片中,如果使用上想快速的跳转pwm 的占空比生效,我们该怎么做呢? 是硬件PWM 更新部分,用了DECODER.MODE设置为NextStep的特殊配置,可以实现更快的占空比更新。在这种模式下,每次接收到NEXTSTEP任务时,…

ble精准指定广播次数和时间的问题

ble精准指定广播次数和时间的问题 一:问题出现的原因: 客人的问题是想在例如广播间隔是300ms ,我想在他发送广播前 我能更新广播包 ,或者我update后 能立刻发送出去的问题; 二:问题的具体分析和解决方法: 想精准…

【2025最新教程】电脑怎么连接打印机?从USB到WiFi的全方位图文教学

很多用户在新买打印机或更换电脑系统后,会遇到“电脑识别不到打印机”“打印机脱机”“无线打印连接不上”等问题。本文将从最常见的四种方式入手:USB有线连接、WiFi无线连接、局域网共享打印机、以及手机/Mac跨平台…

IDEA 官宣 2025 全新 UI,太清爽了!!

大家好,我是R哥。 最近 IntelliJ IDEA 官宣了一款新主题:Islands,目标是打造清新、现代的外观风格,紧跟当下设计潮流。 Islands 支持深色和浅色模式,这个主题只是 UI 上的改进,IDE 的其他所有功能保持不变,也不…

0310-Chip8-SDL2 开发环境

环境Time 2023-07-26 Windows 11 Zig 0.11.0-dev.4191+1bf16b172 SLD2 2.28.1前言 说明 参考:https://github.com/libsdl-org/SDL下载路径: 通过 github 的发布页面下载 SDL2 的开发包:https://github.com/libsdl-o…

LIS 的二分做法

stooooooooooooooooooooooooooo xhr ooooooooooooooooooooooooooooorz 一种是线段树,一种是二分,接下来介绍二分做法。 就是维护一个上升序列,每次加一个元素,具体过程看代码,好理解的() 说人话就是维护长度为 …

springboot自助甜品网站的设计与实现(代码+数据库+LW) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年码垛桁架机械手生产厂家权威推荐榜单:桁架搬运机械臂/桁架机器人/桁架搬运机械臂源头厂家精选

在工业自动化加速推进的背景下,码垛桁架机械手已成为现代制造业提升效率、降低人力成本的核心装备之一。据行业数据显示,2025年中国桁架机械手市场规模预计突破80亿元,年复合增长率稳定在18%以上。码垛桁架机械手凭…

人类智慧

类人群星闪耀时。以下是我独立发现的,自我感觉比较不可思议的,和网上几乎所有题解都不一样的题目做法。 我觉得退役之前能更出来 10.0 都是我的荣幸。 如果你有兴趣观看并且认为其中任何一篇有更为本质的解释,欢迎交…