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

c/c++高级编程

1.避免变量冗余初始化

  • 结构体初始化为0,等价于对该内存进行一次memset,对于较大的结构体或者热点函数,重复的赋值带来冗余的性能开销。
  • 现代编译器对此类冗余初始化代码具有一定的优化能力,因此,打开相关的编译选项的优化后,此类问题可能被优化掉。
#include <stdio.h>typedef struct {
unsigned int year;
unsigned int month;
unsigned int day;
} TimeInfo;void TimeInit (TimeInfo *data) {
data->year = 2022;
data->month = 9;
data->day = 22;
}int main(void) {
TimeInfo data;//TimeInfo data = {0};
TimeInit(&data);
return 0;
}

使用gcc -S编译出来为汇编语言
在这里插入图片描述

movq $0, -20(%rbp)
movl $0, -12(%rbp)

movq $0, -20(%rbp):将64位的0存储到栈上,偏移-20(%rbp)。
movl $0, -12(%rbp):将32位的0存储到栈上,偏移-12(%rbp)。
这两行代码通常用于初始化局部变量为0。

http://www.lryc.cn/news/530956.html

相关文章:

  • 2024-我的学习成长之路
  • vscode软件操作界面UI布局@各个功能区域划分及其名称称呼
  • xmind使用教程
  • Day33【AI思考】-分层递进式结构 对数学数系的 终极系统分类
  • k8s二进制集群之ETCD集群证书生成
  • MySQL5.5升级到MySQL5.7
  • Golang Gin系列-9:Gin 集成Swagger生成文档
  • 利用Python高效处理大规模词汇数据
  • 【PyQt】超级超级笨的pyqt计算器案例
  • Git 的起源与发展
  • 预防和应对DDoS的方法
  • 51单片机开发:独立按键实验
  • 02.04 数据类型
  • FPGA学习篇——开篇之作
  • 【Cadence仿真技巧学习笔记】求解65nm库晶体管参数un, e0, Cox
  • 【RocketMQ】RocketMq之IndexFile深入研究
  • 小白零基础--CPP多线程
  • 利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek
  • 大模型微调技术总结及使用GPU对VisualGLM-6B进行高效微调
  • WPF进阶 | WPF 样式与模板:打造个性化用户界面的利器
  • Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)
  • 自动化构建-make/Makefile 【Linux基础开发工具】
  • python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配
  • 通信方式、点对点通信、集合通信
  • TCP编程
  • OpenAI 实战进阶教程 - 第七节: 与数据库集成 - 生成 SQL 查询与优化
  • Apache Iceberg数据湖技术在海量实时数据处理、实时特征工程和模型训练的应用技术方案和具体实施步骤及代码
  • QT交叉编译环境搭建(Cmake和qmake)
  • Turing Complete-成对的麻烦
  • 寒假刷题Day20