Mid()vs Mid $()

时间:2009-02-06 08:46:45

标签: vb6

根据VB6中的文档,Mid()函数返回一个变量,但Mid $()返回一个字符串,显然这更有效。

我的问题是:

  1. 我可以用什么简单的测试来辨别性能上的差异?我尝试使用Perfmon监控一个简单的应用程序执行一些字符串操作,但是没有 可辨别的差异。

  2. 值得担心吗?我养成了使用$ -ized函数的习惯, 但是我应该建议团队中的每个人也使用它吗?

3 个答案:

答案 0 :(得分:20)

不值得担心。它是15-20年前Microsoft Basic的一个残余,当时快速处理器的速度比现在慢了几个。

使用Mid $具有一定的美学吸引力,而不是让VB确定您的数据类型是什么。如果你有任何循环正在执行它,比如说,每秒数千次,那么你的好奇心因素可能会增加。否则,嗯。

Here's a link给测量差异的人。 Mid $是Mid的2.5倍。包括回到VB4的测试。

答案 1 :(得分:4)

虽然它们之间的表现可以忽略不计,但对于无论如何使用它并不是一个区别。

当需要强类型时,使用变体时可能会有一些细微差别。例如,当您将变量传递给期望ByRef字符串的参数时会发生什么?没什么不好的,但比通过地址更多的东西发生了。

因此,如果你知道你想使用字符串,那么继续使用这些函数的$版本,它们的行为及其在其他表达式中的使用更简单,更好理解。如果您知道需要变体而输入是变体,那么请确保使用非$版本。

答案 2 :(得分:3)

老实说,我认为这可以忽略不计。

也许你可以尝试这样的事情。从http://ccrp.mvps.org/下载“高性能计时器对象”,进行长循环(大约1.000.000次迭代)的字符串运算,并测量运行时差。 “操作”是指:Variant s的连接而不是String的连接。 Mid()Mid$()很可能会执行相同的操作。 OTOH - 您也可以测试

如果你这样做,我会对你发布结果感兴趣。