建设大学网站服务,做电子商务网站的意义,免费建网站电话,企业网站建设公司注意哪些问题1.避免变量冗余初始化
结构体初始化为0#xff0c;等价于对该内存进行一次memset#xff0c;对于较大的结构体或者热点函数#xff0c;重复的赋值带来冗余的性能开销。现代编译器对此类冗余初始化代码具有一定的优化能力#xff0c;因此#xff0c;打开相关的编译选项的优…1.避免变量冗余初始化
结构体初始化为0等价于对该内存进行一次memset对于较大的结构体或者热点函数重复的赋值带来冗余的性能开销。现代编译器对此类冗余初始化代码具有一定的优化能力因此打开相关的编译选项的优化后此类问题可能被优化掉。
#include stdio.htypedef 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。