测试内存对齐对运行速度的影响
生活随笔
收集整理的这篇文章主要介绍了
测试内存对齐对运行速度的影响
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
我们知道内存对齐是为了方便CPU工作,但是对齐和不对齐差异有多大呢?
我自己也没有实际测试过,今天就运行个代码测试看看。
1、1字节对齐的时候
#include "stdio.h"#pragma pack(1) struct test { char x1; short x2; float x3; char x4; }; #pragma pack()int main() {long int i,j;struct test st1;double x;st1.x1=1;st1.x2=2;st1.x3=4.2;st1.x4='1';printf("%ld\n",0x1UL<<sizeof(i)*8 -1);printf("%d\n",(int)sizeof(st1));for(i=0;i<1036854775807;i++);{x = st1.x1+st1.x2+st1.x3+st1.x4;}printf("%f\n",x);return 0; }程序输出
weiqifa@bsp-ubuntu1804:~/c$ gcc zijieduiqi.c && time ./a.out -9223372036854775808 8 56.200001real 34m22.283s user 34m3.727s sys 0m0.052s weiqifa@bsp-ubuntu1804:~/c$2、4字节对齐的时候
4字节对齐刚好方便了CPU,理论上CPU会运行更快的。
代码
#include "stdio.h"#pragma pack(4) struct test { char x1; short x2; float x3; char x4; }; #pragma pack()int main() {long int i,j;struct test st1;double x;st1.x1=1;st1.x2=2;st1.x3=4.2;st1.x4='1';printf("%ld\n",0x1UL<<sizeof(i)*8 -1);printf("%d\n",(int)sizeof(st1));for(i=0;i<1036854775807;i++);{//for(j=0;j<9223372036854775807;j++);//9223372036854775807x = st1.x1+st1.x2+st1.x3+st1.x4;}printf("%f\n",x);return 0; }程序输出
weiqifa@bsp-ubuntu1804:~/c$ gcc zijieduiqi.c && time ./a.out -9223372036854775808 1256.200001real 32m55.646s user 32m55.587s sys 0m0.008s3、去掉字节对齐限制,再运行试试
代码
#include "stdio.h"//#pragma pack(4) struct test { char x1; short x2; float x3; char x4; }; //#pragma pack()int main() {long int i,j;struct test st1;double x;st1.x1=1;st1.x2=2;st1.x3=4.2;st1.x4='1';printf("%ld\n",0x1UL<<sizeof(i)*8 -1);printf("%d\n",(int)sizeof(st1));for(i=0;i<1036854775807;i++);{//for(j=0;j<9223372036854775807;j++);//9223372036854775807x = st1.x1+st1.x2+st1.x3+st1.x4;}printf("%f\n",x);return 0; }程序输出
weiqifa@bsp-ubuntu1804:~/c$ gcc zijieduiqi.c && time ./a.out -9223372036854775808 1256.200001real 32m55.346s user 32m55.587s sys 0m0.008s4、总结
real 34m22.283s ------------> 1字节对齐 real 32m55.646s ------------> 4字节对齐 real 32m55.346s ------------> 默认字节对齐但是这样得出内存对齐让系统运行更快这个结论我觉得还是有点草率,后面我再加大测试,毕竟现在是多进程运行,有可能在进程运行的时候被抢占CPU。
大家也可以说出自己的看法。
推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈
创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖总结
以上是生活随笔为你收集整理的测试内存对齐对运行速度的影响的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: XSD文件详解(以Maven为例)
- 下一篇: 雷神笔记本关闭跳出垃圾游戏广告