使用C++ __builtin_expect优化程序性能后,程序体积不改变原因

结论

使用__builtin_expect优化程序性能,开启-O3的情况下,确实程序的体积可能不改变,但是还是会产生优化效果。

测试代码

不使用__builtin_expect

#include <iostream>void fun(int a, int b) {// 不使用__builtin_expectif (a < b) {std::cout << "a < b" << std::endl;} else {std::cout << "a >= b" << std::endl;}
}int main() {return 0;
}

使用__builtin_expect

#include <iostream>void fun(int a, int b) {// 使用__builtin_expectif (__builtin_expect(a < b, 1)) {std::cout << "a < b" << std::endl;} else {std::cout << "a >= b" << std::endl;}
}int main() {return 0;
}

在Compiler Explorer 选择ARM64 gcc9.5 -O3优化

在这里插入图片描述

汇编指令对比

在这里插入图片描述
上图中主要汇编指令的顺序不一致

在ubuntu 20.04下使用 g++ -O3测试
在这里插入图片描述

发现使用使用__builtin_expect前后程序的大小是完全一样的。

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

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

相关文章

Spring aop切面编程

Spring aop切面编程 如何使用利用AuditAction创建切入点 如何使用 Aspect // 1. 创建一个类&#xff0c;用Aspect注解标记它&#xff0c;表明这是一个切面类。 Component public class LoggingAspect {// 2. 定义切点&#xff1a;在通知方法上&#xff0c;使用切点表达式来指定…

案例|200多套设备实时监测,守护江西彰湖水库安全

中型水库作为水利建设的重要组成部分&#xff0c;在防洪、供水、农业灌溉、改善民生和生态效益等方面都具有重要意义。国务院发布《关于切实加强水库除险加固和运行管护工作的通知》&#xff0c;重点提出要提升信息化管理能力&#xff0c;要加快建设水库雨水情测报、大坝安全监…

【XR806开发板试用】SPI驱动数码管显示

准备工作 安装repo 创建repo安装目录。 mkdir ~/bin下载repo wget https://storage.googleapis.com/git-repo-downloads/repo -P ~/bin/改变执行权限 chmod ax ~/bin/repo设置环境变量&#xff0c;在~/.bashrc文件的最后输入 export PATH~/bin:$PATH和export REPO_URLhttps://…

分布式光纤测温DTS的测温范围是多少?

分布式光纤测温DTS的测温范围不仅仅取决于光缆的感温能力&#xff0c;还受到多种复杂因素的影响。尽管高温光缆可以耐高温&#xff0c;低温光缆可以耐低温&#xff0c;甚至镀金光缆能够耐受高达700摄氏度的极高温度&#xff0c;然而&#xff0c;这些因素并不能完全解释测温范围…

Jmeter性能测试(六)

一、查询数据库进行参数化步骤 1、添加并配置JDBC Connection Configuration 2、添加并配置JDBC Request 3、添加并配置循环控制器组件 4、添加并配置计数器组件(控制循环中的变量取值) 5、通过函数助手生成引用变量名 6、引用变量进行参数化 二、添加配置JDBC Connection Co…

3万字长文看懂Django面试

目录 Django框架的核心设计哲学是什么? 解释Django中的MTV模式与MVC模式的区别。

zookeeper启动后占用8080端口问题分析及解决

ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。它为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 我们经常在运行zookeeper服务时&#xff0c;不需要配置服务端口&#xff0c;…

MySQL 性能模式 performance_schema

文章目录 前言1. 性能模式特点2. 开启性能模式3. 性能模式表分类3.1 采集设置表3.2 实例信息表3.3 等待事件记录表3.4 阶段性事件记录表3.5 语句事件记录表 后记 前言 performance_schema 是 MySQL 提供的一个较为底层的监控&#xff0c;它可以监控数据库中每个线程的所有动作…

运用分支结构与循环结构写一个猜拳小游戏

下面我们运用平常所学的知识来写一个小游戏&#xff0c;这样能够加强我们学习的趣味性&#xff0c;并且能够更加的巩固我们所学的知识。 游戏代码&#xff1a; 直接放代码&#xff1a;&#xff08;手势可以使用数字来代替&#xff0c;比如0对应石头&#xff0c;1对应剪刀&…

【Linux第四课 - git、gdb】git仓库的使用、dgb代码调试

目录 一 、gitgit、gitee、github的理解Linux中git的使用提交删除 二 、gdb - 调试工具进入gdb版本gdb开始调试123、范围查找 一 、git 在linux中使用 分支管理、多人协作 git、gitee、github的理解 git是版本控制工具&#xff0c;gitee和github是网站 Linux中git的使用 提…

编程入门(六)【Linux系统基础操作四】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;if else条件控制基本的if语句带else的if语句嵌…

rancher 证书过期网页进不去 问题解决

参考文章&#xff1a;https://docs.rancher.cn/docs/rancher2.5/cluster-admin/certificate-rotation/_index/#%E6%A6%82%E8%BF%B0 一、问题故障描述&#xff1a; 查看 rancher 容器 日志 docker logs --tail 100 dfc1ef8e4f29提示以下信息&#xff1a; 2024/05/07 08:49:5…

Jmeter性能测试(四)

一、遇到问题解决思路 1、检查请求头是否正确 2、检查请求参数是否正确 3、检查鉴权信息是否正确 4、检查变量作用域 5、检查数据提取是否正确(正则/json提取器) 二、请求头检查 1、在Http信息头管理器查看 2、注意这里的变量作用域是全局的 三、请求参数检查 1、在查看结…

硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。

1. 音频接口 音频插座是一种用于连接音频信号线路的电子元件&#xff0c;常见于音频设备&#xff08;如音响、耳机、话筒等&#xff09;中。它的主要作用是将电子信号转化为声音信号&#xff0c;以满足人们对于音乐、电影、游戏等方面的需求。 根据插头形状的不同&#xff0c;音…

萤瓴优选:短视频带货新风口,普通人不可错过的黄金赛道!

随着电商行业的快速发展&#xff0c;短视频带货成为了现代营销中的一股新势力。在这个激烈竞争的市场环境中&#xff0c;如何找准一个适合自己的发展方向成为了很多人的关注焦点。2024年起&#xff0c;萤瓴优选应运而生&#xff0c;打造出了一个让普通人也能参与其中的短视频带…

Linux设置open files

临时设置 ulimit -n 1025 查看是否成功 ulimit -n 永久设置&#xff0c;网上很多说添加* soft nofile 65535 * hard nofile 65535但设置后不生效 vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 然后重新…

使用 Parallels Desktop 在 Mac 上畅玩 PC 游戏

我们不再需要接受 “Mac 不是为游戏而打造” 这一事实&#xff1b;Parallels Desktop 通过将电脑变成高性能的游戏设备&#xff0c;从而改变了一切。 Parallels Desktop 充分利用 Mac 硬件的强大功能&#xff0c;让您无缝畅玩 Windows 专享游戏。 性能得到提升&#xff0c;可玩…

##09 深入理解多层感知机(MLP):设计和训练一个MLP模型进行分类任务

文章目录 前言1. 多层感知机(MLP)基本概念1.1 工作原理1.2 激活函数2. 使用PyTorch构建MLP2.1 定义网络结构2.2 数据准备2.3 训练模型3. 实战演示:使用MLP进行手写数字分类3.1 模型评估4. MLP模型的调优和性能提升策略前言 多层感知机(MLP)是神经网络研究和应用中的基础模…

软件测试开发之-基于需求文档、设计文档、测试用例的测试答疑助手

本文将基于 LangChain 实现一个 mini 的实战案例。这次实战主要完成的任务&#xff0c;就是设计一个测试答疑助手&#xff0c;这个测试答疑助手的主要功能为基于本地的文档和数据&#xff0c;回答给出的自然语言问题&#xff0c;比如一些数据的统计&#xff0c;查找、组合。 示…

二总线,替代传统485总线通讯,主动上报方案简易实现方法

二总线通信设计专栏 《二总线&#xff0c;替代传统485总线通讯&#xff0c;选型及应用-CSDN博客》《二总线&#xff0c;替代传统485总线通讯&#xff0c;低成本直流载波方案实现及原理-CSDN博客》《二总线&#xff0c;替代传统485总线通讯&#xff0c;调试避坑指南之最大的电流…