当前位置: 首页 > news >正文

反馈式编译

一、    反馈式编译

简介

PGO,即Profile-Guided Optimizations,反馈式优化。PGO是编译器的又一优化技术,PGO与其它的一些优化技术/选项有一个明显的区别是:PGO优化是分三步完成的,是一个动态的优化过程。

反馈优化过程:

  • 步骤 1     编译器插桩编译,编译生成插桩的可执行文件。
  • 步骤 2     运行插桩的可执行文件,生成反馈数据文件gcda,这些文件记录了程序中控制流图上边的执行次数。
  • 步骤 3     编译器读取反馈数据文件,利用反馈优化,生成高性能的可执行文件。

以下优化受益于反馈数据:

寄存器分配,基本块重排,内联,循环展开,指令调度,冗余指令删除等。

说明:代码变更时,反馈数据需要重新生成。

基础选项

编译获得插桩版本二进制或者so

 
  1. gcc main.c –fprofile-generate –o instrument.out

  2. 复制代码

上板运行获取gcda反馈式编译数据

 
  1. ./instrument.out

  2. 复制代码

根据反馈式数据重新编译

 
  1. gcc main.c –fprofile-use –o new.out

  2. 复制代码

二、    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如果这样写&#xff1a; <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只负责类的加载&#xff0c;至于他是否能够运行由执行引擎来决定 3、加载的类的信息会存放在方法区&#xff08;元空间&#xff09;中 二、加载过程 ​​​​​​​ 1、加载阶段 1、通…...

YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2...

安卓中常见的字节码指令介绍

问题背景 安卓开发过程中&#xff0c;经常要通过看一些java代码对应的字节码&#xff0c;来了解java代码编译后的运行机制&#xff0c;本文将通过一个简单的demo介绍一些基本的字节码指令。 问题分析 比如以下代码&#xff1a; public class test {public static void main…...

TCP的三次握手和四次挥手

文章目录 三次握手四次挥手TIME_WAITCLOSE_WAIT 使用wireshark观察 三次握手 握手的最终目的是主机之间建立连接 首先要有两个预备知识点 三次握手建立连接不一定会成功&#xff0c;其中最担心的就是最后一次握手失败&#xff0c;不过会有配套的解决方案建立好连接后是需要被…...

前后端分离------后端创建笔记(08)表单提交

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…...

途乐证券-KDJ分别代表什么?

KDJ是一种技能剖析东西&#xff0c;常见于股票、期货等商场中&#xff0c;它的全称是随机目标&#xff08;KDJ&#xff09;。KDJ目标包括三条线&#xff0c;分别为K线、D线和J线。那么&#xff0c;KDJ分别代表什么呢&#xff1f;本文将从多个视点进行剖析。 1. KDJ的简单介绍 …...

用C语言重写的原始Matlab OpenShoe算法:深入理解和实现步态分析的关键技术

一、引言 在许多领域&#xff0c;如医疗健康、体育科学、虚拟现实和机器人技术中&#xff0c;步态分析都是一个重要的研究领域。步态分析可以帮助我们理解人体运动的机制&#xff0c;评估疾病的影响&#xff0c;优化运动员的表现&#xff0c;甚至设计更自然的机器人运动。Open…...

什么开放式耳机音质好?值得推荐的开放式耳机分享

与封闭式耳机相比&#xff0c;开放式耳机具有更为自然、真实的音质&#xff0c;能够更好地还原音乐现场的声音环境。以下是几款值得推荐的开放式耳机&#xff0c;都来看看有哪些吧。 推荐一&#xff1a;NANK南卡00压开放式耳机 点评&#xff1a;体验最好的开放式耳机没有之一…...

mac harbor的安装

harbor的安装 为什么要整这个呢&#xff0c;因为我在学习k8s&#xff0c;但是需要一个自己的镜像仓库。于是&#xff0c;最开始想到的就是在本地直接部署一个&#xff0c;还比较安全、快速。 直接下载了官方的项目&#xff0c;运行脚本发现出了异常&#xff0c;这种异常我已经…...

SetActive和Enable有什么不同?

介绍 在Unity中&#xff0c;SetActive和Enable都是常用的方法&#xff0c;用于在运行时控制对象的可见性和功能开启状态。尽管它们的目的相似&#xff0c;但在使用时有一些区别。 SetActive SetActive是GameObject类的方法&#xff0c;用于启用或禁用游戏对象及其所有子对象…...

【Vue-Router】重定向

First.vue <template><h1>First Seciton</h1> </template>Second.vue&#xff0c;Third.vue代码同理 UserSettings.vue <template><h1>UserSettings</h1><router-link to"/settings/children1">children1</ro…...

vulnhub靶场之ADROIT: 1.0.1

准备&#xff1a; 攻击机&#xff1a;虚拟机kali、本机win10。 靶机&#xff1a;Adroit: 1.0.1&#xff0c;下载地址&#xff1a;https://download.vulnhub.com/adroit/Adroit-v1.0.1.ova&#xff0c;下载后直接vbox打开即可。 知识点&#xff1a;shell反弹&#xff08;jar&…...

避坑指南:在Windows 11用DOSBox运行老游戏和工具,这些配置细节别忽略

Windows 11怀旧指南&#xff1a;DOSBox经典游戏完美运行配置手册 在数字时代快速迭代的浪潮中&#xff0c;那些承载着无数人青春记忆的DOS经典游戏——《仙剑奇侠传》《金庸群侠传》《大富翁》系列&#xff0c;依然让老玩家们念念不忘。Windows 11作为微软最新的操作系统&#…...

对比按量计费与Token Plan套餐如何为项目选择更优成本模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比按量计费与Token Plan套餐如何为项目选择更优成本模型 在将大模型能力集成到开发项目中时&#xff0c;成本控制是一个绕不开的…...

ASP.NET ViewState反序列化漏洞原理与防御实战

1. 这不是“又一个反序列化漏洞”&#xff0c;而是ASP.NET框架层的定时炸弹你有没有遇到过这样的情况&#xff1a;一个看似普通的ASP.NET WebForms站点&#xff0c;登录页用的是标准的Login控件&#xff0c;后台管理界面用的是GridView和DetailsView&#xff0c;一切看起来都那…...

5分钟部署开源翻译工具:让浏览器变身智能翻译助手

5分钟部署开源翻译工具&#xff1a;让浏览器变身智能翻译助手 【免费下载链接】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配置稳定可靠的国内代理接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置稳定可靠的国内代理接入点 基础教程类&#xff0c;针对常受网络问题困扰的Claude Code用户&#xff0c;指导如何…...

【ChatGPT多语言支持权威评测】:基于27种语言、146项指标的实测数据,揭晓真实可用性天花板

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;【ChatGPT多语言支持权威评测】&#xff1a;基于27种语言、146项指标的实测数据&#xff0c;揭晓真实可用性天花板 评测方法论与语言覆盖范围 本次评测严格采用双盲测试协议&#xff0c;覆盖联合国官方语言&a…...

从PCA到ICA:降维与因子分析的核心原理与实战应用

1. 降维与因子分析&#xff1a;从理论到实战的深度拆解在数据科学和机器学习的日常工作中&#xff0c;我们常常会遇到一个令人头疼的问题&#xff1a;数据维度太高了。想象一下&#xff0c;你手头有一份用户画像数据&#xff0c;包含了成百上千个特征&#xff0c;从年龄、性别到…...

指令不生效?模型“装聋作哑”?ChatGPT自定义指令调试全流程,从日志埋点到上下文权重校准

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;指令不生效&#xff1f;模型“装聋作哑”&#xff1f;ChatGPT自定义指令调试全流程&#xff0c;从日志埋点到上下文权重校准 当用户设置的自定义指令&#xff08;如“始终用简体中文回复”“拒绝回答政治类问…...

[简化版 GAMES 101] 计算机图形学 10:反走样与深度缓冲核心解析

[简化版 GAMES 101] 计算机图形学 10&#xff1a;反走样与深度缓冲核心解析Bilibili 同步视频&#x1f4dd; 课前小记&#xff1a;作业与学习指南&#x1f504; 上节回顾&#xff1a;光栅化的本质&#x1f9e9; 采样理论&#xff1a;走样从何而来&#xff1f;✂️ 反走样&#…...