本文适合任何水平的vb编程人员。

一、减少加载窗体数目
每一个加载的窗体,无论可视与否,都要占据一定数量的内存(其数量随窗体上控件的类型和数量,以及窗体上位图的大小等的不同而变化)。只在需要显示时才加 载窗体,不再需要时,卸载窗体(而不是隐藏窗体)。记住,任何对窗体的属性、方法或控件的引用,或对用 New 声明的窗体变量的引用,都会导致 Visual Basic 加载该窗体。

当使用 Unload 方法卸载窗体时,只能释放部分窗体所占空间。要释放所有空间,可用关键字 Nothing 使窗体的引用无效:

Set Form = Nothing

二、减少控件数目
当设计应用程序时,窗体应尽量少用控件。实际的限制取决于控件的类型和系统,但实际上,含有大量控件的窗体将运行缓慢。一项与之相关的技术是:设计时,尽可能地使用控件数组,而不是在窗体上放置大量同类型的控件。

三、用标签代替文本框
标签控件占用的 Windows 资源比文本框少,因此,在可能的情况下,应使用标签代替文本框。例如,当窗体上需要一个隐藏的控件保存文本时,使用标签更有效。

四、保持数据在磁盘文件或资源中,并且只在需要时才加载
在设计时,直接放入应用程序的数据(象属性或代码中的文字字符串和数值)将增加运行时应用程序占用的内存。运行时从磁盘文件或资源中加载数据可减少占用内存。这对大位图和字符串特别有价值。

详细信息 关于向应用程序添加资源的详细信息,请参阅“利用资源文件进行工作”。

五、组织模块
Visual Basic 只在需要时才加载模块—即当代码调用模块中的一个过程时,模块才被加载到内存。如果从未调用一特定模块中的过程,Visual Basic 决不加载该模块。因此,尽量把相关的过程放在同一模块中,让 Visual Basic 只在需要时才加载模块。

六、考虑替换 Variant 数据类型
Variant 数据类型使用极其灵活,但是比其它数据类型所占内存大。当要压缩应用程序多余的空间时,应考虑用其它数据类型替代 Variant 变量,特别是替代 Variant 变量数组。

每一个 Variant 占用 16 个字节,而 Integer 占 2 个字节,Double 占 8 个字节。变长字符串变量占用 4 个字节加上字符串中每一个字符占用 1 个字节,但是,每一个包含字符串的 Variant 都要占用 16 个字节加上字符串中每一个字符占用 1 个字节。因为它们太大,因此在用作局部变量或过程的参数时,Variant 变量是特别烦人的,这是因为它们消耗堆栈空间太快。

但在有些情况下,使用其它数据类型替代 Variant,灵活性降低了,为弥补损失的灵活性,不得不增加更多的代码。结果是大小没有真正的减小。

七、使用动态数组,并在删除时回收内存
使用动态数组代替固定数组。当不再需要动态数组的数据时,用 Erase 或 ReDim Preserve 放弃不需要的数据,并回收数组所用内存。例如,用以下代码可回收动态数组所用空间:

Erase MyArray

这里,Erase 完全删除数组,ReDim Preserve 则只缩短数组而不丢失其内容:

ReDim Preserve MyArray(10, smallernum)

删除了固定大小数组,也不能回收该数组所占空间—只是简单地清除数组每一元素中的值。如果元素是字符串,或包含字符串或数组的 Variant 变量,那么删除数组可回收这些字符串或 Variants 所占内存,而不是数组本身所占内存。

八、回收被字符串或对象变量用过的空间
当过程结束时,可自动回收(非静态)局部字符串和数组变量所用空间。但是,全局和模块级的字符串和数组变量一直存活到整个程序结束。要想应用程序尽量小,就得尽可能回收这些变量所用空间。将零长度字符串赋给字符串变量,可回收其空间:

SomeStringVar = ""      '回收空间。

同样地,将对象变量设置成 Nothing 可回收该对象所用的部分(而不是全部)空间。例如,删除一个 Form 对象变量:

Global F As New StatusForm

F.Show 1         'Form 加载并以模态显示。
X = F.Text1.Text   '用户按下按钮
'隐藏窗体。
Unload F            '删除窗体可视部分。
Set F = Nothing   '回收空间(模块数据)。

即使没有使用显式窗体变量,也应注意将不再用的窗体卸载,而不是简单地隐藏。

九、消除死代码和无用的变量
在开发和修改应用程序时,可能遗留了死代码— 代码中的一个完整过程,而它并没有被任何地方调用。也可能声明了一些不用的变量。虽然,在创建 .exe 文件中,Visual Basic 确实可删除无用的常数,但不能删除无用的变量和死代码。注意要复查代码,查找并删除无用的变量和死代码。例如,Debug.Print 语句,在运行 .exe 时被忽略,可它常常出现在 .exe 文件中。

当创建 .exe 文件时,含有字符串和变量作为参数的 Debug.Print 语句不会被编译。但是,对于含有函数作为参数的 Debug.Print 语句,其本身被编译器忽略,而函数则被编译。因此,在应用程序运行时,函数被调用,但返回值被忽略。因为,在 .exe 文件中,函数作为 Debug.Print 的参数出现时,将占用空间和 CPU 周期时间,所以在生成 .exe 文件前,最好删除这些语句。

在“编辑”菜单中使用“查找”命令搜索特定变量的引用。或者,当 每个模块都含有 Option Explicit 语句时,通过删除或注释该变量的声明,并运行应用程序,可迅速发现变量是否被使用。若该变量被使用,则 Visual Basic 将出错。若不出错,则该变量没被使用。

VB部分相关文章推荐

※VB快速读取 TextBox 第 N 行的资料

※VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del

※生成迷宫的程序

※另一方法转换大小写

※VB控件注册 - 利用资源文件将dll、ocx打包进exe文件

※VB利用资源文件进行工作

※[转]vb高效编程(优化)

※VB阳历转阴历

※纯VB代码取得硬盘的物理序列号

※VB获得磁盘的文件系统

※做VB的,经常注册和反注册OCX控件和DLL链

※VB从程序中生成Exe文件

※VB6监视/操作剪贴板示例(VB6.0代码)

※VB6里自动提交/自动填表的一种相对通用的方案

※VB移动没有标题的窗体

※VB随机字母的函数

※VB删除带子文件夹和文件的文件夹

※VB怎样屏蔽 Alt+F4键

※VB 隐藏进程

※vb屏蔽文本框点右键时的弹出菜单

※VB手控Combobox的打开或收起

※在VB中INI文件的读写、删除(对中文支持很好)

※vb全局热键的写法(占很少的资源)

※vb取消文本框的粘贴功能

※VB常用文件操作类

※VB获取特殊文件夹

※VB获取windows各常用目录的函数(模块)

※VB生成太极图

※VB:常用内部函数大全,你会了几个呢?

※vb中SendMessage函数

※精简VB程序的代码

※VB:将数字转换为大写中文

※VB:设定 MsgBox 在若干时间之后若无回应则自动关闭

※VB:读取及设定NumLock/CapsLock/ScrollLock的值

※VB:您知道 Mid$ 函量可以放在 '=' 的左方吗

※VB后台获得按键,并执行自己的函数(非钩子及热键)

※VB:将短文件名格式转成长文件名

※在vb中使用Iphlpapi.dll获取网络信息(上)

※在vb中使用Iphlpapi.dll获取网络信息(下)


更多精彩>>>

[转]vb高效编程(优化)相关推荐

  1. 《C++面向对象高效编程(第2版)》——3.17 编写内存安全类

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第3章,第3.17节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  2. 计算机算法对程序设计的作用,算法计算机论文,关于数学算法对计算机编程优化相关参考文献资料-免费论文范文...

    导读:本论文主要论述了算法计算机论文范文相关的参考文献,对您的论文写作有参考作用. (重庆人文科技学院 理工学院数学系,重庆 401572) 摘 要:数学算法是一种将很多问题进行归纳总结,然后采用统一 ...

  3. 6. 设计模式之迭代思维:如何高效编程?

    一.什么是高效编程? 在编程的路上,你是不是曾有过这样的经历:虽然学会一门编程语言后会写代码了,但是有时写出的代码可能并没有想象的那么好.比如: 你的代码只要没有经过测试,发布上线后总是会频繁发生故障 ...

  4. C#高效编程:改进C#代码的50个行之有效的办法(第2版)(奋斗的小鸟)_PDF 电子书

    下载地址:http://pan.baidu.com/share/link?shareid=1689099661&uk=721744522 QQ:2864670220  (提供电子书提取密码) ...

  5. matlab编程实际应用,MATLAB高效编程技巧与应用:25个案例分析

    第一部分 高效编程技巧 第1章 MATLAB快速入门 1.1 熟悉MATLAB环境 1.1.1 MATLAB的启动 1.1.2 MATLAB desktop 1.1.3 MATLAB 程序编辑器(Ed ...

  6. 设计模式之迭代思维:如何高效编程?

    在编程的路上,你是不是曾有过这样的经历:虽然学会一门编程语言后会写代码了,但是有时写出的代码可能并没有想象的那么好.比如: 你的代码只要没有经过测试,发布上线后总是会频繁发生故障: 每次你修改完代码后 ...

  7. 《高效编程十八式》后记

    后记 王伟冰 首先,我为什么要写<高效编程十八式>.其实就是想把自己编程过程中学到的.领悟到的东西整理整理,发出来大家讨论讨论.我不是计算机专业的学生,我喜欢编程,但是在我所在的学院里像我 ...

  8. 切割优化模型可以用c语言编程不,数学算法对计算机编程优化研究

    数学算法是一种以数学模型为基础的理论知识,能够对计算机编程中的问题进行归纳总结和统一计算,以提高逻辑应用的效率,它是计算机编程的基础.计算机编程是从数学模型开始的,首先要根据具体问题进行抽象,以建立一 ...

  9. 《MATLAB 神经网络43个案例分析》:第43章 神经网络高效编程技巧——基于MATLAB R2012b新版本特性的探讨

    <MATLAB 神经网络43个案例分析>:第43章 神经网络高效编程技巧--基于MATLAB R2012b新版本特性的探讨 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 ...

最新文章

  1. 微服务下的APM全链路监控
  2. [codevs 1916] 负载平衡问题
  3. 请问如何把.net framework框架集成在安装程序里头?
  4. C++PrimerPlus学习——第九章编程练习
  5. php中数据类型、数组排序、循环语句、混编、操作本地文件流程、常用API、函数、魔术常量
  6. 截屏状态监听 - iOS
  7. elasticsearch集群部署
  8. [译] 轻松发布私有 App
  9. linux命令之route
  10. 一篇真正教会你开发移动端页面的文章(二)
  11. BUUCTF--[第二章 web进阶]死亡ping命令
  12. Day01-python编程基础
  13. [干货分享]硬件测试快速入门你必须了解的知识!
  14. Firefox ios 火狐浏览器iOS版本二次开发(一)
  15. ue4 后期处理景深_【UE4设计师】2-3后期处理效果——使用景深设置电影拍摄
  16. 关键词拍卖中最优保留价的研究
  17. 基于模糊聚类和协同过滤的混合推荐系统
  18. OneNote for Windows 10 快捷键大全
  19. C++ STL函数 map (henu.hjy)
  20. Mybatis新增数据后,报ERROR: Field * doesn‘t have a default value

热门文章

  1. 5.9 亿国内用户简历遭殃,数据库持续“裸奔”!
  2. 物联网的未来不止于 5G!
  3. 昔日的 HTC 与三星,今日的苹果:寒冬过后手机厂商才会明白的潜规则
  4. 黑客利用智能灯泡窃取用户数据!
  5. UCan下午茶杭州站:突破困惑,为大数据商业化变现探寻出路
  6. 马化腾回应《腾讯没有梦想》:我的理想不是赚多少钱
  7. 009.共享目录下VS编写的程序在linux下打开出现中文乱码
  8. 数据结构与算法之 树
  9. 华硕win10键盘失灵_Win10 进阶用法汇总
  10. winform调用websocket_C#基于websocket的前台及后台实时推送