- 博客(88)
- 资源 (12)
- 收藏
- 关注
原创 高性能代码优化实战与解析
在实际软件开发中,性能优化的手段非常多样,最常见的往往是业务逻辑、数据结构和算法层面的改进。本文主要聚焦于计算密集型场景下的一些底层优化方法,包括循环展开、SIMD、循环合并、分支去除和数据预取等。这些技术并不是通用的“万能钥匙”,而是针对特定类型的性能瓶颈,在合适的场景下可以带来显著提升。
2025-09-15 16:38:02
991
1
原创 性能优化-循环展开的威力有多大?
文章摘要:本文对比了三种计算字符串长度的实现方法:普通循环、4次循环展开和SIMD(AVX2)优化版本。测试数据显示,在10万次随机字符串测试中,SIMD版最快(16.7ms),4次展开版次之(30.2ms),原始循环最慢(41.1ms)。循环展开通过减少循环次数(N/4)和分支判断提升性能,而SIMD利用AVX2指令集一次处理32字节数据,实现并行计算。性能排序为:SIMD > 4次展开 > 原始循环,验证了优化策略的有效性。
2025-09-07 02:46:11
287
原创 Lua脚本如何执行主程序的C函数
本文介绍了Lua脚本调用C函数的方法,重点演示了通过Luajit的FFI机制直接调用主程序函数。方法包括:1) 主程序编译时添加-rdynamic选项导出函数符号表;2) Lua脚本使用ffi.cdef定义C函数接口;3) 通过ffi.C直接调用C函数。示例代码展示了SendMsg等函数的定义、调用及Makefile配置,验证了Lua成功调用主程序函数。该方法实现了Lua作为控制语言与C性能计算的灵活结合,提升了开发效率。
2025-08-22 18:12:55
312
原创 多模匹配Aho-Corasick 算法真的很快吗?
本文比较了多模匹配算法(Aho-Corasick)与普通字符串查找在性能上的差异。多模匹配通过构建Trie树和失败指针,实现时间复杂度为O(n+m)的高效匹配,而普通查找则为O(n*k)。实验使用不同数量级的关键词(10,100,500个)测试一个系统日志文件,结果表明多模匹配在关键词数量较大时性能优势显著。测试代码基于开源aho_corasick实现,通过计时器测量两种方法的匹配耗时,为选择合适的关键词规模场景提供数据参考。
2025-06-26 20:18:48
372
原创 常见压缩算法性能和压缩率对比 LZ4 LZO ZSTD SNAPPY
压缩算法性能对比与实测分析 通过对LZ4、Zstandard、Brotli、LZO和Snappy五种压缩算法的测试表明: 速度方面:LZ4和LZO表现最佳,压缩/解压耗时最短(LZ4仅需15ms解压); 压缩率:Zstd以9.23%的压缩率显著领先,Brotli次之(13.19%); 综合性能:Zstd在压缩率和速度间取得平衡,适合文件压缩、数据库备份等场景;LZ4则更适用于实时数据处理。实测日志压缩中,Zstd压缩耗时71ms,解压31ms,综合性价比最优。各算法安装简单,通过GitHub源码编译即可快速
2025-05-30 17:09:03
2079
原创 编译C/C++程序使用duckDB例子
年轻的数据库,程序内置的数据库, 只能单进程使用,支持内存模式和文件模式。一些场景适用,快就完了。 数据库使用的小例子。
2025-04-06 00:39:47
919
原创 《深入Linux内核架构》读书笔记--第三章 内存管理
这一章内容很多,有120页,主要描述了物理内存的管理。NUMA的内存节点,每个内存节点有若干内存域,内存域中的页帧,页表等。中间初始化的一些细节暂且略过,后面重点是伙伴系统原理、SLAB分配器原理。
2025-03-25 21:51:11
1155
原创 《深入Linux内核架构》读书笔记--第二章 进程管理与调度
这一章花了好几天才看完,内容非常多,一开始尝试书本结合代码跟踪理解,但是效率太低,进度太慢。linux2.6的代码和5.15的代码差距也比较大,很多结构和细节都发生了变化, 只是大体的框架逻辑没变。所以中间开始少跟代码,更关注概念定义、逻辑本身。如果日后有需要编码,可以再去深入学习代码细节。比如关键点task_struct我就没有弄出来,逐个成员去理解它们的含义了。可能是由于书本翻译的原因,一些语句初看不太容易理解,也去查询其他的资料来帮助理解,有用的资料也会记录。
2025-03-07 02:44:22
862
原创 《深入Linux内核架构》读书笔记--第一章 简介与概述
这是《深入Linux内核架构》的读书笔记,我将把我觉得重要的内容记录下来,而以前知道和一些常识的不做记录。比如一些双线链表基础的数据结构的内容就不会记录, 而多级页表需要记录下来。目前只看了第一章概述,感觉是打开了一扇门,能够看清内核全貌的大门。而以前用过用户态的编程,对于内核的了解是管中窥豹,不得真章。进程切换:进程释放CPU时,保存进程状态;进程重新激活时,恢复状态。调度:内核控制进程之间共享CPU时间的分配。如A进程 30% B进程 70%地址空间分为内核空间和用户态空间。
2025-02-28 14:23:21
985
原创 DPVS-4: dpvs.conf配置文件解读
在进行单臂负载均衡测试和双臂负载均衡测试时,发现dpvs.conf中很多配置项意思尚不理解。DPVS的配置文件条目比较多,参考资料和代码来理解配置文件,希望通过对配置文件的理解能更好的了解DPVS。下面的内容可能会有错误,会在以后的研究中进行修正。
2025-02-23 01:43:04
652
原创 RedisDB双机主从同步性能测试
测试程序单连接写入并且同步只有 10000 req/s 左右的写入性能。如果关闭PUB,单纯写入会有20000 req/s左右性能。通过benchmark验证,单链接也是18000 req/s写入性能。
2025-01-09 21:17:11
681
原创 libevent定时器的性能测试(与rte_timer对比)
100万个定时器,设置超时,回调后继续set定时器, 不停循环。测试定时器轮询,reset的时间占比,来评估定时器性能。 libevent定时器和DPDK rte_timer进行一个性能对比。
2025-01-08 18:24:19
582
原创 DPDK定时器rte_timer的性能测试
DPDK 单worker线程使用定时器处理会话超时,会有多影响性能 ?那么今天就来研究一下 rte_timer的性能到底如何。用循环超时回调的方式,查看timer轮询处理所占整个线程cycles的百分比
2025-01-08 01:49:43
638
原创 ubuntu扩展逻辑卷大小 (安装系统时默认只使用一半)
ubuntu系统安装时,一不留神,默认的磁盘空间只利用了一半,还有一半闲置了。我们就得扩展利用这一半。或者虚拟机增加了虚拟磁盘的大小,也需要把卷再扩展一遍。80G的硬盘,只用了39G。
2024-12-24 13:13:24
550
原创 SimAI-Simulation初步认识
模拟器用于指定工作负载、以及自定义网络拓扑进行训练仿真,得出训练过程中的训练耗时以及通信耗时等相关情况。使得大模型在部署前可以进行无GPU设备的参数调优。涉及术语说明:asw = 接入交换机, LEAFpsw = Pod交换机, SPINEnv_switch = GPUserver内一个nvlink转发芯片, 一台GPU Server只有一个nv_switch。
2024-12-23 16:11:47
1832
2
原创 ubuntu22.04 nginx配置下载目录,亲测成功
nginx配置下载目录,需要修改/etc/nginx/sites-available/default
2024-12-22 02:10:04
539
原创 ubuntu22.04安装SecureCRT8.7.3,完成顺利使用
Ubuntu22.04安装SecureCRT并破解过程,包含对应的安装包和依赖库以及相应工具
2024-07-15 17:54:09
2304
3
原创 双机多网口配置同网段地址,可以通过目的IP确定接收数据的网卡吗?
从ARP报文来看,10.0.0.21的MAC响应ens38和ens39都有,但是ens39的MAC响应是先收到的,ARP表中 10.0.0.21,10.0.0.22的mac地址都是 ens39 00:0c:29:4f:a6:ce。机器B ens38 00:0c:29:4f:a6:c4 10.0.0.21/24 ens39 00:0c:29:4f:a6:ce 10.0.0.22/24。而主机对ARP请求的响应,可能是都从一个接口处,也可能各个接口都出,这种行为的区别暂不清楚受到哪些内核配置的影响。
2024-05-28 15:28:56
1432
原创 全网最简单vscode使用Makefile调试多文件的C/C++代码
vscode调试C/C++教程很多,操作麻烦,这里试图找到一个最简单的使用vscode调试C/C++代码的方法。这里是使用Makefile的多文件方式。
2024-01-05 18:03:13
2901
3
原创 iperf3跑满100G网卡实测记录
其中发送速率12016406,基本稳定在1200000 KB/s以上。三个窗口分别同时开3个iperf3 client,跑10分钟。三个iperf3 Client, 合并速率大约 92GB/s。Kbps Mbps Gbps换算倍数是 1000。三个窗口分别开3个iperf3 server。ubuntu20.04, 系统设置默认状态。Kpbs 与 KB/s换算关系是 x8。两台服务器 100G网卡对插直连。
2023-07-27 16:13:16
6551
1
原创 RDMA RoCev2 CM建链和Socket建链测试
RDMA在高性能计算,AI大模型训练中发挥着重要的作用。主流支持RDMA的协议有IB、RoCev1、RoCev2、iWARP。其中RoCev2是应用最广泛的协议,因为其RDMA over UDP/IP,不依赖昂贵的IB网络设备,同时支持路由,性能上也接近原生IB水准。
2023-07-11 17:01:33
5149
2
原创 arch_mem_object_align的作用是什么?
DPDK在申请内存池时,会对OBJ大小进行重新计算最终进行重计算的函数是根据注释,此函数是让对象的首地址均匀的落在内存的channels和ranks中(X86平台下)。
2023-07-10 13:38:26
276
原创 gettimeofday和clock_gettime性能对比
测试方法gettimeofday 和 clock_gettime的7种类型时间的对比。clock_gettime类型如下类型含义CLOCK_REALTIME从1970.1.1到目前的时间CLOCK_MONOTONIC系统启动到现在的时间CLOCK_THREAD_CPUTIME_ID线程所消耗的时间CLOCK_PROCESS_CPUTIME_ID进程所消耗的时间CLOCK_MONOTONIC_RAW基于硬件时间CLOCK_REALTIME_CO
2022-03-29 15:13:48
4015
1
GDB中文手册
2012-09-14
C++输入输出流详解
2011-10-17
VPP简单插件源码Hook数据包
2018-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅