首页 > 代码库 > struct结构会增加程序的开销
struct结构会增加程序的开销
struct结构一方面能够加强对变量的管理,增加程序的可读性,但是另一方面,结构体也会加大程序的开销。
看下面一段代码:
struct TEST_S { int a; int b; float c; }; int _tmain(int argc, _TCHAR* argv[]) { TEST_S ts; int a; int b; int c; ts.a = 100; ts.b = 200; ts.c = 300.f; a = 100; b = 200; c = 300.f; return 0; }使用反汇编工具,
<strong><span style="font-size:18px;"></span></strong><pre name="code" class="cpp"> ts.a = 100; ts.b = 200; ts.c = 300.f;
给结构体3个变量赋值,实际上在Debug下汇编代码为:
mov dword ptr [ts],64h mov dword ptr [ebp-0Ch],0C8h movss xmm0,dword ptr ds:[0BA5858h] movss dword ptr [ebp-8],xmm0从汇编代码中可以看出,除了结构体的第一个变量外,接下来的变量就需要在结构体的头地址的基础上加上偏移量,而非结构体的情况如下:
a = 100; b = 200; c = 300.f;其汇编代码如下:
mov dword ptr [a],64h mov dword ptr [b],0C8h mov dword ptr [c],12Ch明显少了一步地址减法。
但是在Release情况下,编译器默认对程序进行优化,由于优化下的汇编代码无法查看,所以无法查清其实际开销情况。
struct结构会增加程序的开销
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。