根据VB6中的文档,Mid()函数返回一个变量,但Mid $()返回一个字符串,显然这更有效。
我的问题是:
我可以用什么简单的测试来辨别性能上的差异?我尝试使用Perfmon监控一个简单的应用程序执行一些字符串操作,但是没有 可辨别的差异。
值得担心吗?我养成了使用$ -ized函数的习惯, 但是我应该建议团队中的每个人也使用它吗?
答案 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 - 您也可以测试 。
如果你这样做,我会对你发布结果感兴趣。