网易首页 > 网易号 > 正文 申请入驻

VB中Byte、Boolean和Integer与Long的开销及性能相同吗?

0
分享至

前言

笔者在《VB/VBA变量类型,如此看,方能步入高阶开发之路》中曾以知识点的形式,给大家讲了这么一个结论:因为栈是4字节对齐的,因此1字节的Byte、2字节的Boolean和Integer,其实和4字节Long一样,建议大家尽可能使用4字节的Long来提高代码性能。然后有朋友私信我表示不服,其实前述结论是没有问题的,但没有说的很清楚。具体是怎么回事呢?接下来,就来详细盘盘栈对齐对VB变量选择的影响

一、什么是栈对齐?

简单来说,栈对齐就是将栈内存空间等距划分为一个个格子32位机器上,这个等距离为4字节。对齐是指使用栈时,起始地址必须是前述格子的首位置。也即栈是4字节对齐的。

二、为什么要对齐?

因为整齐,才方便操作,才快啊。大家知道GPU在处理浮点计算时,比CPU要快,所以装高性能显卡,可以大大提升计算机的算力。VB处理文件时,有随机文件和顺序文件之分,而随机文件远比顺序文件要快(随机文件每次操作的长度是一样的)。内存页面按4K对齐,硬盘也要分区4K对齐,诸如此类的例子,在计算机里数不胜数,都是因为整齐才快。

整齐的背后,其实跟寻址有关。计算机代码都要通过高速缓存才能被CPU执行,而这个高速缓存就是寄存器啦。在32位X86机器上,寄存器是32位的。也就是说栈按4字节对齐,实际上就是与寄存器的容量和寻址能力对齐,这样指令执行起来才不至于耗费更多的CPU时钟周期,从而提升运算性能。

三、VB变量的栈对齐表现

在前面的文章里,给大家介绍了VarPtr函数可以取变量地址,那我们正好可以使用它来看看变量在栈上的分配情况。

1、验证栈是否是4字节对齐的

如果栈不是4字节对齐的,那么4字节变量地址就一定会出现4字节不对齐的情况。我们可以试验若干次VarPtr(Lng)的返回值,其实都是4的倍数。其实这个验证更多是搞起耍的,但的确可以从现象上来印证。

2、VB中Byte、Boolean、Integer与Long的资源开销是否一致呢?

为了验证,我们写如下demo,然后编译为EXE:

运行下,看看结果:

变量顺序:abcde

可以得出以下结论:

(1)每个变量的确位于4字节对齐的位置,与变量类型无关。

(2)栈上内存分配的位置顺序与变量顺序一致。

(3)Byte、Boolean、Integer在栈上分配的内存,的确占4字节,与Long的开销一样。

是不是有点开心,但是别高兴太早,再在IDE环境中使用解释机制运行下:

纳尼?有情况

变量在栈内存分配情况

可得出什么结论:

(1)Long类型位于4字节对齐位置,其他显然没有。

(2)栈上内存分配位置与变量顺序一致。

(3)资源开销,貌似跟Long一样。

是不是可以下结论了呢?为了说明情况,我们增加一些变量,并将变量顺序打乱,再看看:

编译运行结果:

上述显示变量顺序为:abcdefg

说明编译机制下,前述结论是正确的,那解释机制呢?

变量顺序为:aefcbgd

栈内存分布情况,变量顺序为:aefcbgd

在IDE的解释机制下,可以说明:

(1)栈内存分配的确是4字节对齐的,栈内存分配顺序与变量顺序一致,但明显有按类组合的特性,且会利用已分配内存,浪费少。

(2)Byte、Boolean、Integer在栈上的资源开销与Long不一致,比编译机制更节约资源。

四、前述结论如何理解,是否具有普遍性呢?

其实栈对齐,是由编译器及具体的优化策略决定的。VB6与VC6的Debug版本的编译器及优化策略是一致的,VB6和VBA的IDE则完全是另外一套机制。通过前面的实验,可以看出,VB的编译机制,开销更大,而解释机制则开销更小。

那究竟哪种要好点呢?尽管二者都尽量与寄存器机制保持一致,但性能上是存在区别的。根据Intel手册,从AL/AH/AX换到EAX时,会有5-6个时钟周期的延迟,因此VB的解释机制,虽然节省资源,但性能却不如编译机制。

那究竟差异好大呢?其实在编码层,尤其是在IDE环境下,是感觉不到的。更何况VB的解释器是全部用汇编写的,性能非常强悍,也就是说,二者的差异可以忽略不计。但为什么还是会觉得VB6的编译比解释快呢?解释机制感觉起来很慢,是因为要逐行翻译代码,还得随时响应暂停等人机交互。尤其是VBA代码使用Office的GUI元素,系统还要处理大量的窗口消息,当然慢啦。

点击头像加关注,BtOfficer为你涨更多VB底层知识。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
浪姐公演起冲突!何洁抹着泪拎包走人,尚雯婕开撕她的原因找到了

浪姐公演起冲突!何洁抹着泪拎包走人,尚雯婕开撕她的原因找到了

美美谈情感
2024-06-02 22:06:35
军事 | 在亚洲的土地上:有关战争的“和会”,和有关和平的战争……

军事 | 在亚洲的土地上:有关战争的“和会”,和有关和平的战争……

新民周刊
2024-06-03 09:19:20
“铁头”涂鸦靖国神社后,在日华人第一时间报警,称警察很感谢我

“铁头”涂鸦靖国神社后,在日华人第一时间报警,称警察很感谢我

不掉线电波
2024-06-03 09:40:43
网传斯坦福大学毕业都去卷乡镇公务员?竟是当年县高考理科状元…

网传斯坦福大学毕业都去卷乡镇公务员?竟是当年县高考理科状元…

火山诗话
2024-06-02 19:06:14
10年0冠,6万人涌入球场,61岁穆帅签约费内巴切:从此你我一体!

10年0冠,6万人涌入球场,61岁穆帅签约费内巴切:从此你我一体!

风过乡
2024-06-03 07:12:44
晨意帮忙丨“滴滴滴”怪声每半分钟响一次!长沙女子求支招:到底哪来的?

晨意帮忙丨“滴滴滴”怪声每半分钟响一次!长沙女子求支招:到底哪来的?

潇湘晨报
2024-06-02 21:44:11
意大利日本基本出线!女排奥运名额剩3选2,中国队再输2场=被淘汰

意大利日本基本出线!女排奥运名额剩3选2,中国队再输2场=被淘汰

侃球熊弟
2024-06-03 08:08:26
胡锡进:铁头你为啥不能忍一下不吱声,去当一个无名英雄

胡锡进:铁头你为啥不能忍一下不吱声,去当一个无名英雄

映射生活的身影
2024-06-02 21:16:48
马斯克有一个伟大的计划:将全车电线从5000米,降至100米

马斯克有一个伟大的计划:将全车电线从5000米,降至100米

互联网.乱侃秀
2024-06-02 20:22:55
曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

华人星光
2024-06-02 15:36:44
笑喷!国羽传奇被蔡斌连累发文“求饶”:一输我就挨骂好多年了

笑喷!国羽传奇被蔡斌连累发文“求饶”:一输我就挨骂好多年了

厝边人侃体育
2024-06-03 09:17:35
穆帅上任先买人:点名要买三大前锋 恒大昔日外援在列

穆帅上任先买人:点名要买三大前锋 恒大昔日外援在列

球事百科吖
2024-06-03 03:37:57
森林北陪汪峰过儿童节!穿镂空休闲上衣配小白裤,真是又美又飒

森林北陪汪峰过儿童节!穿镂空休闲上衣配小白裤,真是又美又飒

点点细语
2024-06-02 22:25:40
辟谣!朱芳雨否认周琦已签辽宁+正努力续约 萨林杰太贵吃不下

辟谣!朱芳雨否认周琦已签辽宁+正努力续约 萨林杰太贵吃不下

醉卧浮生
2024-06-03 08:23:16
中美已谈妥,奥斯汀对华作出保证,美航母主动避战,亚太格局骤变

中美已谈妥,奥斯汀对华作出保证,美航母主动避战,亚太格局骤变

说天说地说实事
2024-06-03 09:01:37
拉莫斯晒六冠老队友合照:恭喜你们这些混蛋玩意儿

拉莫斯晒六冠老队友合照:恭喜你们这些混蛋玩意儿

懂球帝
2024-06-03 07:40:05
社评:中国是言行一致的亚太和平守护者

社评:中国是言行一致的亚太和平守护者

环球网资讯
2024-06-03 00:03:14
12个国家“授权”可以攻击俄罗斯本土!国防大学教授的灵魂拷问

12个国家“授权”可以攻击俄罗斯本土!国防大学教授的灵魂拷问

深度知局
2024-05-31 17:48:38
用小学的知识讲明白,中国为何造不出顶尖的发动机

用小学的知识讲明白,中国为何造不出顶尖的发动机

田间农人阿馋
2024-06-03 01:15:02
激烈交锋,中美还是没谈拢,抢在董军上专机前,美方作出特殊安排

激烈交锋,中美还是没谈拢,抢在董军上专机前,美方作出特殊安排

影孖看世界
2024-06-01 21:30:44
2024-06-03 10:42:44
BtOfficer
BtOfficer
安全,办公,工具,情报,文字
88文章数 1016关注度
往期回顾 全部

科技要闻

2万字演讲|黄仁勋剧透 未来3年新品有这些

头条要闻

岛内舆论批赖清德上任后像"斗鸡" 表现比蔡英文还差

头条要闻

岛内舆论批赖清德上任后像"斗鸡" 表现比蔡英文还差

体育要闻

万人空巷!皇马举行欧冠夺冠庆典

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

黄仁勋的计划:涉及新AI平台 HBM4 机器人

汽车要闻

搭载华为HiCAR 传祺M6 MAX售14.58万元

态度原创

教育
手机
亲子
时尚
健康

教育要闻

成都市三原外国语学校发布2024年秋季小学一年级新生招生简章

手机要闻

小米 SU7 车机现身安兔兔:骁龙 8295 加持,流畅度位于第一梯队

亲子要闻

弟弟哭到停不下来 哥哥帮忙扶下巴

这些中年妈妈太会打扮了,剪短发还穿长裙,美得没有年龄感

晚餐不吃or吃七分饱,哪种更减肥?

无障碍浏览 进入关怀版