通过实验解答问题:Variant慢吗?

ZDNet软件频道 时间:2009-02-04 作者:ZDNet China |  我要评论()
本文关键词:vb 软件
VB的Variant(变量)数据类型是相当有用的,因为它能够容纳字符串或者数值数据,但是它却因为拖慢其他东西的速度而名声不佳。这是真的吗?我决定找出事情的真相。
本文译自Builder.com,未经许可请勿转载vb的Variant(变量)数据类型是相当有用的,因为它能够容纳字符串或者数值数据,但是它却因为拖慢其他东西的速度而名声不佳。这是真的吗?我决定找出事情的真相。

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

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

t1 = Timer
For counter = 1 to SomeLargeValue
  " Do a calculation here
Next
ElapsedTime = Timer - t1

下面就是我用来将Variant类型和Integer(整数)类型比较的代码。我首先运行代码,将变量s1s2声明为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以及其他计算机和编程的书以及杂志文章。




责任编辑:炒饭

欢迎评论投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134