VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 通过实验解答问题:Variant慢吗?
发表评论(0)作者:Peter Aitken, 平台:VB6.0+Win98, 阅读:8742, 日期:2003-08-29
    VB的Variant(变量)数据类型是相当有用的,因为它能够容纳字符串或者数值数据,但是它却因为拖慢其他东西的速度而名声不佳。这是真的吗?我决定找出事情的真相。


我的试验用到了Timer(计时器)函数,它会返回自从午夜零点以来所走过时间的秒数。Timer所返回的值会精确到1/100秒。对于今天上G赫兹的处理器而言这已经算很长时间了,但是通过使用这个函数反复在循环里执行某个动作,你可以给某个动作的持续时间精确计时。

这段代码相对简单,它是基于下面的模型的:

t1 = Timer
For counter = 1 to SomeLargeValue
  注释: Do a calculation here
Next
ElapsedTime = Timer - t1

下面就是我用来将Variant类型和Integer(整数)类型比较的代码。我首先运行代码,将变量s1和s2声明为Variant类型,然后再次将这些变量声明为Integer类型。类似的,我还会对浮点的划分进行Variant同Single的比较测试,为调用Mid函数而将Variant同String类型进行比较。

t1 = Timer
s1 = 12
Fori = 1 To 500000
  s2 = s1 * 123
Next
ElapsedTime = Timer - t1

对于数值计算而言,其结果就和很多VB程序员所预计的一样:同使用Integer类型或者Single类型相比较,使用Variant类型会让运行慢60秒。但是,如果使用字符串数据的话,结果就出人意料了:Variant事实上要比String类型快,但是只快了6个百分点。

这是不是就意味着,你应该避免对数值使用Variant数据类型呢?不用——对于只需要进行有限计算的程序而言,这样的速度差从来都是无关紧要的。但是对于某些计算密集型的应用程序而言,例如数字造型或者统计分析程序,你就可能需要将Variant的使用限制到那些真正需要灵活性的场合了。


--------------------------------------------------------------------------------

本文作者Peter Aitken:自从Visual Basic 1.0版以来,Peter Aitken就一直使用VB编程。他编写过很多关于VisualBasic以及其他计算机和编程的书以及杂志文章。