linux缓存-利用缓存提高性能的编程技巧

目录

利用缓存提高性能的编程技巧

实现方式


利用缓存提高性能的编程技巧

利用GCC编译器对齐属性  __attribute__((__aligned__(n))),利用处理器的缓存提高程序的执行速度;

  • 使变量的起始地址对齐到一级缓存行长度的整数倍;
  • 使结构体对齐到一级缓存行长度的整数倍
  • 使结构体中一个字段对齐到一级缓存行长度整数倍;
     

实现方式


1、以 4 个下划线开头的宏 cacheline_aligned : 对齐到 一级缓存行的长度 。

#ifndef —cacheline_aligned
#define —cacheline aligned _attribute (( _aligned_ (SMP CACHE_BYTES)))
#endif 

 2、以四个下划线开头的宏____cacheline_aligned_in_smp:在对称处理器系统中等价于宏____cacheline_aligned,在单处理器中是空的宏。

#ifndef cacheline aligned_in smp
#ifdef CONFIG_SMP
#define _ cacheline_aligned in smp _cacheline aligned
#else
#define cacheline_aligned in smp
#endif /* CONFIG SMP */
#endif

3、
以两个下划线开头的宏_cacheline_aligned: 对齐到一级缓存行的长度,并且把变
量放在 ".data..cacheline_aligned" 节中。 

#ifndef _ cacheline_aligned
#define _ cachel ine_al igned \
__attribute ((_ aligned (SMP CACHE BYTES) , \
__section_ (".data .. cacheline_aligned" )))
#endif /* _ cacheline_aligned */

4、以两个下划线开头的宏__cacheline_aligned_in_smp: 在对称多处理器系统中等价于宏__cacheline_aligned, 在单处理器系统中是空的宏。 

#ifndef _ cacheline_aligned_in smp
#ifdef CONFIG_SMP
#define _ cacheline_aligned in srnp
#else
#define _ cacheline_aligned in srnp
#endif /* CONFIG_SMP */
#endif

 学习链接:

kernel学习链接

 参考

https://course.0voice.com/v1/course/intro?courseId=2&agentId=0

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

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

相关文章

游戏遇到的问题

天涯明月刀 就是天刀的假全屏,很多天刀玩家可能玩其他游戏比较少或者对电脑了解不多,不在意帧数,但是肯定还是有一部分玩家发现了这个问题,就是“我使命召唤12都能跑到60帧的机器跑个破天刀40帧甚至30帧?”问题何在呢&#xff1…

提升群辉AudioStation音乐体验,实现公网音乐播放

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…

SpringBoot之视图解析

文章目录 前言一、视图解析1.视图解析原理流程 二、模板引擎——Thymeleaf基本语法表达式字面量文本操作数学运算布尔运算比较运算条件运算特殊操作设置属性值-th:attr迭代条件运算属性优先级 提取公共页面th:insertth:replace区别 总结 前言 SpringBoot默认不支持 JSP&#x…

nodejs进阶知识

文章目录 写在前面一、dependencies、devDependencies和peerDependencies区别:二、需要牢记的npm命令2.1 npm2.2 npm config list2.3 npm配置镜像源 三、npm install 的原理四、package-lock.json的作用五、npm run 的原理六、npx6.1 npx是什么6.2 npx的优势6.3 npm…

Windows上安装 Go 环境

一、下载go环境 下载go环境:Go下载官网链接找到自己想下载的版本,点击下载,比如我这是windows64位的,我就直接点击最新的。 二、安装go环境 双击下载的.msi文件 next next 他默认的是c盘,你自己可以改,然…

解决Spring Boot 2.7.16 在服务器显示启动成功无法访问问题:从本地到服务器的部署坑

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

二、C++项目:仿muduo库实现并发服务器之时间轮的设计

文章目录 一、为什么要设计时间轮?(一)简单的秒级定时任务实现:(二)Linux提供给我们的定时器:1.原型2.例子 二、时间轮(一)思想(一)代码 一、为什…

web:[极客大挑战 2019]Havefun

题目 点进页面,页面显示是一只猫,没有其他的提示信息 查看网页源代码,划到最后 这段php代码包含了通过get方式的提交信息 构造payload: http://aaf4c4b5-7bf2-404f-8bf5-f6e97d830b72.node4.buuoj.cn:81/?catdog 即得到flag f…

2023软工作业(一)——计算器

班级班级社区作业要求软件工程实践第一次作业-CSDN社区作业目标完成一个具有可视化界面的科学计算器参考文献Fyne 目录 作业要求 项目源码地址 作业目标 0. 界面及功能展示 1. PSP表格 2. 解题思路描述 3. 核心代码 4. 设计与实现过程 5. 程序性能改进 6. 单元测试展…

Fiddler 抓包八个实用技巧

大家对Fiddler应该不会陌生,但里面有些技巧不见得都会,这里就有八个实用技巧,通过对Fiddler的定制,能提高大家的测试效率。 fiddler抓包教程:一节课教你fiddler抓包在测试领域的四大实战,你一定要学_哔哩哔…

vue event bus 事件总线

vue event bus 事件总线 创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\08-事件总线-扩展 vue --version vue crea…

freertos动态和静态任务创建的区别

//静态创建。 //任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务堆栈 StackType_t StartTaskStack[START_STK_SIZE]; //任务控制块 StaticTask_t StartTaskTCB; //任务句柄 TaskHandle_t StartTask_Handler;…

微信多账号聊天、多账号管理,轻松拿捏

你是否微信账号太多,很难管理; 是否很难触达精准客户; 是否人力成本不断上升, 公司迫切需要提高工作效率,降低成本。 ...... 针对多个痛点问题, 微信管理系统进行了有针对性的开发和定位。 多账号聚合…

【计算机网络黑皮书】入门必学的基本网络知识

【事先声明】 这是对于中科大的计算机网络的网课的学习笔记,感谢郑烇老师的无偿分享 书籍是《计算机网络(自顶向下方法 第7版)》 需要的可以私信我,无偿分享,课程简介下也有 B站链接 目录 网络核心电路交换端到端之间的…

LeetCode【2251. 花期内花的数目】

给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi (都 包含)。同时给你一个下标从 0 开始大小为 n 的整数数组 people ,people[i] 是第 i 个人来看花的时间…

Grom 如何解决 SQL 注入问题

什么是 SQL 注入 SQL 注入是一种常见的数据库攻击手段, SQL 注入漏洞也是网络世界中最普遍的漏洞之一。 SQL 注入就是恶意用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常规代码的过程。 这个问题的来源就是, SQL 数据库的操作是通过 SQ…

【Unity ShaderLab 还原嗜血边缘角色渲染效果_“Niohoggr“_角色渲染(第一篇)】

还原嗜血边缘角色着色效果 《嗜血边缘》截取其中的片段如下:资源分析其中Guitar贴图4张模型:人物细节图:人物模型 Inspector面板这里做一个区域区分:Body贴图1_BCBody贴图2_NBody贴图3_CMBody贴图4_SRMBody贴图4_RGB,分别在模型中显示的区域Reflection Probe《嗜血边缘》 设…

Spring工具类--ReflectUtils的使用

原文网址:Spring工具类系列--ReflectUtils的使用_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring的ReflectUtils的使用。 ReflectUtils工具类的作用:便利地进行反射操作。 Spring还有一个工具类:ReflectionUtils,它们在功能上…

GORM 中SQL、慢SQL打印日志传递 trace ID, Kratos框架输出日志trace id

实现 gorm.io/gorm/logger 下的函数⬇️ // gorm 源码 type Interface interface { LogMode(LogLevel) Interface Info(context.Context, string, ...interface{}) Warn(context.Context, string, ...interface{}) Error(context.Context, string, ...interface{}) Trace…

7、脏话检测

6、片花关联长视频 脏话检测功能本身远不如上一篇介绍的片花关联长视频有技术挑战性,不过还是值得说说,因为这是我们采用技术方式提高工作效率的第一次尝试。 游戏解说是审核难度比较大的一类短视频内容,一方面是时间比较长,很多…