反馈式编译
一、 反馈式编译
简介
PGO,即Profile-Guided Optimizations,反馈式优化。PGO是编译器的又一优化技术,PGO与其它的一些优化技术/选项有一个明显的区别是:PGO优化是分三步完成的,是一个动态的优化过程。
反馈优化过程:
- 步骤 1 编译器插桩编译,编译生成插桩的可执行文件。
- 步骤 2 运行插桩的可执行文件,生成反馈数据文件gcda,这些文件记录了程序中控制流图上边的执行次数。
- 步骤 3 编译器读取反馈数据文件,利用反馈优化,生成高性能的可执行文件。
以下优化受益于反馈数据:
寄存器分配,基本块重排,内联,循环展开,指令调度,冗余指令删除等。
说明:代码变更时,反馈数据需要重新生成。
基础选项
编译获得插桩版本二进制或者so
-
gcc main.c –fprofile-generate –o instrument.out -
复制代码
上板运行获取gcda反馈式编译数据
-
./instrument.out -
复制代码
根据反馈式数据重新编译
-
gcc main.c –fprofile-use –o new.out -
复制代码
二、 FGO
PGO是gcc原生的反馈编译优化方案, 通过插桩运行采样得到的gcda文件来指导第二次编译优化,而FGO针对gcda文件二进制属性,解决业务侧源码交付的痛点,profile文件使用文本的形式导入。两者的区别是FGO的profile文件可以通过适当的手动修改适配,但当前FGO未完全支持C++模块优化。
三、 softFDO
softFDO是通过原生插桩运行得到的采样数据转换成google开源gcov数据格式,通过auto-profile Pass遍将数据导入进行优化。两者的区别是PGO支持value profile, softFDO不支持;softFDO使用的auto-profile Pass边在优化时调用了early-inline操作
相关文章:
反馈式编译
一、 反馈式编译 简介 PGO,即Profile-Guided Optimizations,反馈式优化。PGO是编译器的又一优化技术,PGO与其它的一些优化技术/选项有一个明显的区别是:PGO优化是分三步完成的,是一个动态的优化过程。 反馈优化过…...
sql-libs靶场-----0x00、环境准备
文章目录 一、PhPstudy下载、安装二、Sqli-libs下载、搭建三、启用Sqli-libs phpstudy地址:https://www.xp.cn/ sqli-libs地址:https://github.com/Audi-1/sqli-labs 一、PhPstudy下载、安装 1、下载–解压–安装,安装完成如下图 2、更换php…...
一百四十九、Kettle——Linux上安装的kettle8.2创建共享资源库时遇到的问题(持续更新中)
一、目的 在kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后开始创建共享资源库,但是遇到了一些问题 二、Linux系统以及kettle版本 (一)Linux:CentOS 7 英文的图形化界面模式 &#…...
Mysql 建索引规范
索引规范 今天在建线上表的时候,做了一个varchar的索引,运维说varchar的索引会占用很大的内存。 于是 上网搜了一下建索引规范 一、建表规约 【强制】(1) 存储引擎必须使用InnoDB 解读:InnoDB支持事物、行级锁、并发…...
新基建助推数字经济,CosmosAI率先布局AI超算租赁新纪元
伦敦, 8月14日 - 在英国伦敦隆重的Raffles OWO举办的欧盟数字超算新时代战略合作签约仪式,CosmosAI、Infinite Money Fund与Internet Research Lab三方强强联手,达成了历史性的合作协议,共同迈向超算租赁新纪元。 这次跨界的合作昭示了全球…...
微服务06-分布式事务解决方案Seata
1、Seata 概述 Seata事务管理中有三个重要的角色: TC (Transaction Coordinator) - **事务协调者:**维护全局和分支事务的状态,协调全局事务提交或回滚。 TM (Transaction Manager) - **事务管理器:**定义全局事务的范围、开始全局事务、提交或回滚全局事务。 RM (Resourc…...
Wireshark有线网卡抓包报错The capture session could not be initiated on capture device
最近在使用Wireshark进行抓包排错时,选择网卡后提示报错,在此之前从未出现过,报错内容如下: 提示内容是The capture session could not be initiated on capture device,无法在捕获设备上启动捕获会话要求操作是Please…...
FreeSWITCH执行bridge时如何“制造“ringback
dialplan如果这样写: <action application"record_session" data"$${recordings_dir}/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/> <action application"bridge" data"user/1001"/> 或者这样…...
Java # 类加载子系统
一、概述 1、 类加载器子系统负责从文件系统或者网络中加载.Class文件 2、classloader只负责类的加载,至于他是否能够运行由执行引擎来决定 3、加载的类的信息会存放在方法区(元空间)中 二、加载过程 1、加载阶段 1、通…...
YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)
【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2...
安卓中常见的字节码指令介绍
问题背景 安卓开发过程中,经常要通过看一些java代码对应的字节码,来了解java代码编译后的运行机制,本文将通过一个简单的demo介绍一些基本的字节码指令。 问题分析 比如以下代码: public class test {public static void main…...
TCP的三次握手和四次挥手
文章目录 三次握手四次挥手TIME_WAITCLOSE_WAIT 使用wireshark观察 三次握手 握手的最终目的是主机之间建立连接 首先要有两个预备知识点 三次握手建立连接不一定会成功,其中最担心的就是最后一次握手失败,不过会有配套的解决方案建立好连接后是需要被…...
前后端分离------后端创建笔记(08)表单提交
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
途乐证券-KDJ分别代表什么?
KDJ是一种技能剖析东西,常见于股票、期货等商场中,它的全称是随机目标(KDJ)。KDJ目标包括三条线,分别为K线、D线和J线。那么,KDJ分别代表什么呢?本文将从多个视点进行剖析。 1. KDJ的简单介绍 …...
用C语言重写的原始Matlab OpenShoe算法:深入理解和实现步态分析的关键技术
一、引言 在许多领域,如医疗健康、体育科学、虚拟现实和机器人技术中,步态分析都是一个重要的研究领域。步态分析可以帮助我们理解人体运动的机制,评估疾病的影响,优化运动员的表现,甚至设计更自然的机器人运动。Open…...
什么开放式耳机音质好?值得推荐的开放式耳机分享
与封闭式耳机相比,开放式耳机具有更为自然、真实的音质,能够更好地还原音乐现场的声音环境。以下是几款值得推荐的开放式耳机,都来看看有哪些吧。 推荐一:NANK南卡00压开放式耳机 点评:体验最好的开放式耳机没有之一…...
mac harbor的安装
harbor的安装 为什么要整这个呢,因为我在学习k8s,但是需要一个自己的镜像仓库。于是,最开始想到的就是在本地直接部署一个,还比较安全、快速。 直接下载了官方的项目,运行脚本发现出了异常,这种异常我已经…...
SetActive和Enable有什么不同?
介绍 在Unity中,SetActive和Enable都是常用的方法,用于在运行时控制对象的可见性和功能开启状态。尽管它们的目的相似,但在使用时有一些区别。 SetActive SetActive是GameObject类的方法,用于启用或禁用游戏对象及其所有子对象…...
【Vue-Router】重定向
First.vue <template><h1>First Seciton</h1> </template>Second.vue,Third.vue代码同理 UserSettings.vue <template><h1>UserSettings</h1><router-link to"/settings/children1">children1</ro…...
vulnhub靶场之ADROIT: 1.0.1
准备: 攻击机:虚拟机kali、本机win10。 靶机:Adroit: 1.0.1,下载地址:https://download.vulnhub.com/adroit/Adroit-v1.0.1.ova,下载后直接vbox打开即可。 知识点:shell反弹(jar&…...
避坑指南:在Windows 11用DOSBox运行老游戏和工具,这些配置细节别忽略
Windows 11怀旧指南:DOSBox经典游戏完美运行配置手册 在数字时代快速迭代的浪潮中,那些承载着无数人青春记忆的DOS经典游戏——《仙剑奇侠传》《金庸群侠传》《大富翁》系列,依然让老玩家们念念不忘。Windows 11作为微软最新的操作系统&#…...
对比按量计费与Token Plan套餐如何为项目选择更优成本模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比按量计费与Token Plan套餐如何为项目选择更优成本模型 在将大模型能力集成到开发项目中时,成本控制是一个绕不开的…...
ASP.NET ViewState反序列化漏洞原理与防御实战
1. 这不是“又一个反序列化漏洞”,而是ASP.NET框架层的定时炸弹你有没有遇到过这样的情况:一个看似普通的ASP.NET WebForms站点,登录页用的是标准的Login控件,后台管理界面用的是GridView和DetailsView,一切看起来都那…...
5分钟部署开源翻译工具:让浏览器变身智能翻译助手
5分钟部署开源翻译工具:让浏览器变身智能翻译助手 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 还在为浏览外文网页时频繁切换翻译工具而烦恼吗&…...
基于C#实现的支持五笔和拼音输入的输入法
一、核心架构设计 二、关键代码实现 1. 输入法核心类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72…...
为Claude Code配置稳定可靠的国内代理接入点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置稳定可靠的国内代理接入点 基础教程类,针对常受网络问题困扰的Claude Code用户,指导如何…...
【ChatGPT多语言支持权威评测】:基于27种语言、146项指标的实测数据,揭晓真实可用性天花板
更多请点击: https://kaifayun.com 第一章:【ChatGPT多语言支持权威评测】:基于27种语言、146项指标的实测数据,揭晓真实可用性天花板 评测方法论与语言覆盖范围 本次评测严格采用双盲测试协议,覆盖联合国官方语言&a…...
从PCA到ICA:降维与因子分析的核心原理与实战应用
1. 降维与因子分析:从理论到实战的深度拆解在数据科学和机器学习的日常工作中,我们常常会遇到一个令人头疼的问题:数据维度太高了。想象一下,你手头有一份用户画像数据,包含了成百上千个特征,从年龄、性别到…...
指令不生效?模型“装聋作哑”?ChatGPT自定义指令调试全流程,从日志埋点到上下文权重校准
更多请点击: https://codechina.net 第一章:指令不生效?模型“装聋作哑”?ChatGPT自定义指令调试全流程,从日志埋点到上下文权重校准 当用户设置的自定义指令(如“始终用简体中文回复”“拒绝回答政治类问…...
[简化版 GAMES 101] 计算机图形学 10:反走样与深度缓冲核心解析
[简化版 GAMES 101] 计算机图形学 10:反走样与深度缓冲核心解析Bilibili 同步视频📝 课前小记:作业与学习指南🔄 上节回顾:光栅化的本质🧩 采样理论:走样从何而来?✂️ 反走样&#…...
