主页

打开文件 open,这时候是如何调用内核的

用户空间调用:在用户程序中调用 open 函数时,会触发用户空间的库函数执行。 库函数处理:用户空间的库函数(如 C 标准库)会将 open 函数的参数进行封装,并将系统调用号(syscall number)传递给操作系统内核。 系统调用:操作系统内核接收到系统调用号后,会根据该号码确定要执行的系统调用函数(如 sys_open)。 内核空间处理:操作系统内核进入内核空间,并执行相应的系统调用函数。在这个例子中,会执行 sys_open 函数。 执行系统调用函数:sys_open 函数会执行实际的文件打开操作,包括权限检查、文件描述符分配等。如果一切正常,它会返回一个文件描述符(file descripto...

阅读更多

Eigen CV 比较

Eigen Vs CV 矩阵基本运算 差异 OpenCV在x86 & arm上Mat矩阵的用float进行存储,但是计算时高于float,计算,再截断 VS Eigen使用Matrix定义是指定的类型进行存储和计算 Eigen MatrixXf随机矩阵乘法与c++实现float矩阵乘法京都一直 OpenCV 随机矩阵乘法与C++ & Eigen 不一致 OpenCV与C++ float 强转成double 相乘再强转成foat 京都一直 OpenCV与Eigen MatrixXf cast到double进行乘法计算后强转成float精度移植 策略 Eigen使用Float进行计算(长期推荐),预计计算效率会比OpenCV计...

阅读更多

arm 性能优化内容

背景知识 cpu 流水线 一段指令的执行大致可分为取指–译指–执行–写回4个阶段,在单流水线的情况下运行如下:   取指单元 译指单元 执行单元 写回单元 时钟周期1 取指1       时钟周期2   译指1     时钟周期3     执行1   时钟周期4       写...

阅读更多

c++ 性能提升

cmakelist编译的时候打开wall 对一些语法进行检查 set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fPIC -Wall”) 类的初始化列表要按照类定义的顺序执行初始化 有返回值的函数一定要返回 size_t和int类型的比较消除 static_cast(XX) 在h文件中,用前向声明替换 头文件 对象定义成指针或引用,在cpp包含头文件 前向声明的好处 1 加快编译的速度 2 编译的时候避免互相依赖,减少头文件的暴露,在做接口实现的时候是必须的 指针统一用智能指针,不用裸指针进行new delete操作 提供单例的宏对象展开 #define DECLARE_SINGLETON(classname) ...

阅读更多

c++ 性能优化资源

链接 类别 推荐理由 业务可用性 https://www.brendangregg.com/perf.html 性能分析工具 linux perf大佬brendangregg官方网站 ⭐️⭐️⭐️⭐️⭐️ 强烈推荐 https://perfetto.dev/ 性能分析工具 Android和Chrome内置性能分析平台 ⭐️⭐️⭐️⭐️⭐️ 强烈推荐 https://github.com/google/benchmark Benchmark Googl...

阅读更多

c++ conan 配置以来

1. conan 的建议 https://docs.conan.io/1/cheatsheet.html 版本控制、修订记录和依赖解析应该在整个公司保持一致。 所有开发者的配置需要保持同步,尤其是软件包id计算模式。在CI/CD系统中,应该始终使用lock文件,以保证构建的可重现性。 2. conan的配置 设置settings https://docs.conan.io/1/reference/conanfile/attributes.html class HelloConan(ConanFile): settings = {"os": ["Windows"], "compiler": {"Visual Studio": {"version": [1...

阅读更多

利用gperftools 查找热点

编译运行 嵌入式端生成采样结果 .prof.x 文件 PC端分析采样结果 gperf tools 安装 sudo apt-get install perl graphviz ghostscript gv 生成函数调用关系图cpu.pdf https://www.cnblogs.com/caosiyang/archive/2013/01/25/2876244.html 从函数调用关系图里面找到样本比例占用较高的函数 参考文献 https://zhuanlan.zhihu.com/p/343231398?utm_source=ZHShareTargetIDMore&utm_medium=social&utm_oi=1022619091906961408 htt...

阅读更多

性能优化工具

perf工具 火焰图分析 y轴:调用栈深度,火焰高度表示调用栈的深度。 x轴:函数采样数,宽度表示函数被采样到的次数,即消耗的资源多少。 常用的分析流程 检查线程采样点占比,火焰图最底层即为特定线程名的资源占比,让同名线程绘制到一起 检查火焰图的平顶 函数执行CPU消耗较高,如RLECompress函数,存在大量计算操作 函数执行次数较多,比如线程数量较多时,线程的频繁切换会导致schedule()消耗较高 常用的指令 抓取所有进程包含主进程的火焰图 抓取火焰图前执行 perf top -a 抓取全局火焰图 在线调试 监控全局CPU函数热点:./perf top -a -...

阅读更多