在优化程序代码大小的诸多技术中,大多包括从代码中删除不必要的元素。在编译应用程序时,Visual Basic自动删除某些元素。而标识符名称、注释、空行的长度或数量是无须限制的,当应用程序作为一个。EXE文件运行时,以上这些元素都不会影响应用程序所占内存的大小。其他元素,如变量、窗体和过程,确实要占据内存的一部分空间。最好将它们精简以使效率更高。下面介绍6种方法可用于缩小应用程序所需内存和减少代码大小,希望能对初学者有所帮助。
<!--大屏幕--> 1、减少加载窗体、控件数目和用标签代替文本框
每一个加载的窗体,无论可视与否,都要占据一定数量的内存(其数量随窗体上控件的类型和数量,以及窗体上位图的大小等的不同而变化)。只在需要显示时才加载窗体,不再需要时卸载窗体(而不是隐藏窗体)。记住,任何对窗体的属性、方法或控件的引用,或对用New声明的窗体变量的引用,都会导致Visual Basic加载该窗体。
使用Unload方法卸载窗体时,只能释放部分窗体所占空间。要释放所有空间,可用关键字Nothing使窗体的引用无效:
Set Form=Nothing
当设计应用程序时,窗体应尽量少用控件。实际的限制取决于控件的类型和系统,但实际上,含有大量控件的窗体将运行缓慢。一项与之相关的技术是:设计时尽可能地使用控件数组,而不是在窗体上放置大量同类型的控件。控件数组是一组具有共同名称和类型的控件。它们的事件过程也相同。在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件消耗的资源要少。当希望若干控件共享代码时,控件数组也很有用。标签控件Label占用的Windows资源比文本框Textbox少,因此在可能的情况下,应使用标签代替文本框。例如,当窗体上需要一个隐藏的控件保存文本时,使用标签更有效。
2、使用磁盘文件或资源和组织模块
在设计时,直接放入应用程序的数据(象属性或代码中的文字字符串和数值)将增加运行时应用程序占用的内存。运行时从磁盘文件或资源中加载数据可减少占用内存。这对大位图和字符串特别有价值。资源文件实际上是由一系列独立的字符串、位图或者其他项目组成的,其中每一项都有一个唯一的标识符。可以使用类似于在Microsoft Visual C++中提供的文本编辑器和资源编译器创建资源文件。编译过的资源文件带有。res扩展名。
Visual Basic只在需要时才加载模块即当代码调用模块中的一个过程时,模块才被加载到内存。如果从未调用一特定模块中的过程,Visual Basic决不加载该模块。因此,尽量把相关的过程放在同一模块中,让Visual Basic只在需要时才加载模块。
3、考虑替换Variant数据类型
Variant数据类型使用极其灵活,但是比其他数据类型所占内存大。当要压缩应用程序多余的空间时,应考虑用其他数据类型替代Variant变量,特别是替代Variant变量数组。
每一个Variant占用16个字节,而Integer占2个字节,Double占8个字节。变长字符串变量占用4个字节加上字符串中每一个字符占用1个字节,但是,每一个包含字符串的Variant都要占用16个字节加上字符串中每一个字符占用1个字节。因为它们太大,因此在用作局部变量或过程的参数时,Variant变量是特别烦人的,这是因为它们消耗堆栈空间太快。但在有些情况下,使用其他数据类型替代Variant,灵活性降低了,为弥补损失的灵活性,不得不增加更多的代码。结果是大小没有真正的减小。
4、使用动态数组并在删除时回收内存
使用动态数组代替固定数组。当不再需要动态数组的数据时,用Erase或ReDim Preserve放弃不需要的数据,并回收数组所用内存。例如,用以下代码可回收动态数组所用空间:
<!--大屏幕-->
Erase MyArray
里,Erase完全删除数组,ReDim Preserve则只缩短数组而不丢失其内容:
ReDim Preserve MyArray(10, smallernum)
删除了固定大小数组,也不能回收该数组所占空间——只是简单地清除数组每一元素中的值。如果元素是字符串,或包含字符串或数组的Variant变量,那么删除数组可回收这些字符串或Variants所占内存,而不是数组本身所占内存。
5、回收被字符串或对象变量用过的空间
当过程结束时,可自动回收(非静态)局部字符串和数组变量所用空间。但是,全局和模块级的字符串和数组变量一直存活到整个程序结束。要想应用程序尽量小,就得尽可能回收这些变量所用空间。将零长度字符串赋给字符串变量,可回收其空间:
SomeString Var="" '回收空间
同样,将对象变量设置成Nothing可回收该对象所用的部分(而不是全部)空间。例如,删除一个Form对象变量:
Global F As New StatusForm F.Show 1 'Form加载并以模态显示X=F.Text1.Text '用户按下按钮,隐藏窗体Unload F '删除窗体可视部分Set F=Nothing '回收空间(模块数据)
即使没有使用显式窗体变量,也应注意将不再用的窗体卸载,而不是简单地隐藏。
6、消除死代码和无用的变量
在开发和修改应用程序时,可能遗留了死代码——代码中的一个完整过程,而它并没有被任何地方调用。也可能声明了一些不用的变量。虽然在创建。exe文件中,Visual Basic确实可删除无用的常数,但不能删除无用的变量和死代码。注意要复查代码,查找并删除无用的变量和死代码。如Debug.Print语句,在运行。exe时被忽略,可它常常出现在。exe文件中。
当创建。exe文件时,含有字符串和变量作为参数的Debug.Print语句不会被编译。但对于含有函数作为参数的Debug.Print语句,其本身被编译器忽略,而函数则被编译。因此,在应用程序运行时,函数被调用,但返回值被忽略。因为在。exe文件中,函数作为Debug.Print的参数出现时,将占用空间和CPU周期时间,所以在生成exe文件前,最好删除这些语句。
在"编辑"菜单中使用"查找"命令搜索特定变量的引用。或者当每个模块都含有Option Explicit语句时,通过删除或注释该变量的声明,并运行应用程序,可迅速发现变量是否被使用。若该变量被使用,则Visual Basic将出错。若不出错,则该变量没被使用。
分享到:
相关推荐
Visual Basic代码库 是一个集收集,管理Visual Basic代码于一体的软件。它本身带有100多个源码,同时用户可以自己添加,删除自己的源码,不用打开Visval Basic,你就可以查找和浏览全部源代码。同时,它支持在Visual...
VISUAL BASIC程序开发范例宝典 明日科技 源代码 解压后301M 《软件工程师典藏:Visual Basic程序开发范例宝典(第2版)》全面介绍了Visual Basic程序开发所用到的技术和技巧。全书分为18章,内容包括窗体与界面、控件...
6.VB多样式的ListBox的控件.rar 7.托盘及气泡提示控件.rar 8.Vista玻璃透明控件.rar 9.用户界面.rar 10.仿Outlook2003 SideBar的源代码.rar 11.QQ垂直菜单.rar 12.表格打印模块.rar 13.属性窗口_控件.rar 14.OFFICE...
Visual Basic Virtual Machine(5.1) Visual Basic Virtual Machine(6.0) Microsoft C Runtime Library(7.0) rncert Visual Studio Microsoft C Runtime Library(7.10) Microsoft Visual C++2005 SP1(8061187) ...
VB代码库.rar -管理源代码的工具!
一、功能概述: 编写此软件的目的是为了尽量的解脱VB程序员的负担,在任何一家软件公司里,新的程序员都会面临一个问题,就是去读别人所写的代码,可是由于习惯...l VisualBasic代码管理器 l DLL、OCX即时注册器
初学Visual Basic 2010 Begin Visual Basic 2010随书代码
高级Visual Basic编程 (Advanced Visual Basic 6)
Microsoft 发布了一个累积更新汇总 Microsoft Visual Basic 6.0 服务包 6 (SP6) 运行时扩展文件。此累积更新汇总包含安全更新和许多其他控件,它们构成 Visual Basic 6.0 运行时扩展文件的更新版本。 如何获取此累积...
《Visual Basic .NET专业项目实例开发》源代码.rar
Visual Basic游戏编程 Visual Basic游戏编程 VisualVisual Basic游戏编程 Basic游戏编程 Visual Basic游戏编程
本书面向的对象 Visual Basic.Net展现了一个全新的世界,我希望,本书能够帮助读者逐渐开始使用新的Visual Basic.Net系统。我还编写了一部姐妹卷,.NET Programmer\'s Reference(ISBN 0-07-219466-9),介绍了...
Visual Basic编程范例源代码,收录上百个编程实例
《Visual Basic.NET项目开发宝典》主要介绍Visual Basic的数据库项目开发过程。《Visual Basic.NET项目开发宝典》从实用的角度,对如何使用VB开发应用程序做了系统、全面的介绍。《Visual Basic.NET项目开发宝典》...
简介:本书讲述了如何运用Visual Basic.NET来确保代码安全的问题。介绍了基于角色的Windows安全系统和基于代码的.NET安全系统,探讨了.NET安全的高级主题。
《Visual Basic范例开发大全》482个典型实例,每个实例都配多媒体教学视频讲解,全面解析Visual Basic程序开发的核心技术与应用。《Visual Basic范例开发大全》超值赠品,免费奉送,21.5小时多媒体教学视频。 ...
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。
vb程序源代码格式化工具,Visual Basic程序源代码格式化工具 对vb,Visual Basic程序源代码进行格式化处理,使之美观,好看
用Visual Basic编写的记事本源代码