上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
提高VB运行速度
作者:未知 申领版权
2010年11月14日 共有 877 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    编程人员从大量的程序开发中积累了许多非常实用的经验与技巧,它们就象一盘盘的快餐,看似简单但营养绝对丰富!用“餐”之后,您的VB程序将立即超频。还犹豫什么,快来品尝品尝吧 ...
    
    
    用Mid$命令超速字符串添加操作
    从头开始删除集合项目
    用InStr函数实现代码减肥
    精用Boolean表达式,让代码再减肥
    函数名巧做局部变量
    火眼识破隐藏的Variant变量
    GoSub在编译程序中速度变慢
    减少DoEvents语句的数量
    And、Or和Xor:让我们来优化表达式
    静态变量慢于动态变量
    善用"Assume No Aliasing"编译选项
    为常量定义合适的类型
    你真正理解"Allow Unrounded Floating Point Operations"选项的含义吗?
    除法运算符"\"与"/"的区别
    使用"$-类型"字符串函数会更快
    妙用Replace函数替代字符串连接操作符&
    固定长度字符串数组:赋值快,释放快!
    未公开的返回数组型函数加速秘诀
    深入使用LIKE操作符
    创建任意长度重复字符串的简洁方法
    另辟蹊径处理字符串中的字符:字节数组法
    快速清除数组部分内容
    快速初始化Variant和String类型数组
    访问简单变量总是快于数组元素值
    创建新表时,快速拷贝字段
    无闪烁地快速附加字符串到textbox控件
    快速找到选中的OptionButton
    表单及控件的引用阻止了表单的卸载
    重定义编译DLL文件的基地址
    快速调入TreeView控件以及ListView控件的子项内容
    Friend过程快于Public过程
    使用Objptr函数快速查找集合中的对象
    使用ObjPtr检测2个对象变量是否指向同一对象
    读取文件内容的简洁方法
    字体对象克隆招法
    用Mid$命令超速字符串添加操作
    
    
    
    大家都知道,&操作符的执行速度是相当慢的,特别是处理长字符串时。当必须重复地在同一变量上附加字符时,有一个基于Mid$命令的技巧可以使用。基本思路就是:预留一个足够长的空间存放操作的结果。下面是应用这个技术的一个例子。
    
    
    
    假设要建立一个字符串,它要附加从1开始的10000个整数:"1 2 3 4 5 6 7 ... 9999
    
    10000"。下面是最简单的实现代码:
    res = ""
    For i = 1 to 10000: res = res & Str(i): Next
    
    <>
    face=宋体>代码虽然简单,但问题也很明显:Res变量将被重分配10000次。下面的代码实现同样的目的,但效果明显好转:
    
    Dim res As String
    Dim i As Long
    Dim index As Long
    
    ’预留足够长的缓冲空间
    res = Space(90000)
    
    ’指针变量,指出在哪里插入字符串
    index = 1
    
    ’循环开始
    For i = 1 to 10000
    substr = Str(i)
    length = Len(substr)
    
    ’填充字符串的相应区间段数值
    Mid$(res, index, length) = substr
    
    ’调整指针变量
    index = index length
    
    Next
    
    ’删除多余字符
    res = Left$(res, index - 1)
    
    测试表明:在一个333MHz的计算机上,前段代码执行时间为2.2秒,后者仅仅为0.08秒!代码虽然长了些,可是速度却提高了25倍之多。呵呵,由此看来:代码也不可貌相啊
    ?
    
    
    
    提高运行速度(二)
    
    从头开始删除集合项目
    
    
    
    删除集合中的所有内容有许多方法,其中有些非常得迅速。来看看一个包含10,000个项目的集合:
    Dim col As New Collection, i As Long
    For i = 1 To 10000
    col.Add i, CStr(i)
    Next
    
    可以从末尾位置为起点删除集合内容,如下:
    
    
    For i = col.Count To 1 Step -1
    col.Remove i
    
    Next
    
    也可以从开始位置为起点删除集合内容,如下:
    
    For i = 1 To col.Count Step 1
    col.Remove i
    Next
    
    <>
    face=宋体>试验证明,后者要快于前者百倍多,比如0.06秒比4.1秒。原因在于:当引用接近末尾位置的集合项目时,VB必须要从第1个项目开始遍历整个的项目链。 <>
    face=宋体>更有趣的是,如果集合项目的数量加倍,那么从末尾开始删除与从头开始删除,前者要比后者花费的时间将成倍增长,比如前者是24秒,后者可能为0.12秒这么短!
    最后提醒您:删除集合的所有内容的最快方法就是“毁灭”它,使用下面的语句: Set col = New Collection
    
    对于一个包含20,000个项目的集合,上述操作仅仅耗时0.05秒,这比使用最快的循环操作进行删除也要快2倍左右。 
    

    

 

相关新闻

您可能对这些感兴趣  

用VB做定时断线程序
VisualBasic中的界面设计原则和编程技巧
VB6.0与Windows API 间的呼叫技巧
制作可以自动隐藏的弹出式菜单
ListBox中的字符串超长显示的解决方法
VB中的Unicode 和 Ansi 格式
优化程序显示速度
Visual Basic 产生渐层的 Form 背景
用VB实现客户——服务器(TCP/IP)
用VB制作注册软件的方法

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》