关于vb6:Mid()vs Mid $()


Mid() vs Mid$()

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

我的问题是:

  • 我可以使用哪种简单的测试来识别性能差异? 我尝试监视一个简单的应用程序,该应用程序使用Perfmon执行一些字符串操作,但是没有
    明显的差异。

  • 值得担心吗? 我已经习惯了使用$大小的函数,
    但我是否应该建议团队中的每个人也都使用它?


  • 不值得担心。这是15到20年前的Microsoft Basic的残余,当时快速处理器的速度要比当今的任何产品都要慢几个数量级。

    但是,使用Mid $而不是让VB确定您的数据类型具有一定的审美吸引力。而且,如果您有执行它的任何循环,例如每秒数千个tiems,那么您的好奇心因素可能会增加。否则,不。

    这是测量差异的人的链接。 Mid $约为Mid的2.5倍。包括追溯到VB4的测试。


    尽管它们之间的性能可以忽略不计,但实际上并不是区分使用哪种差异。

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

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


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

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

    如果您这样做了,那么如果您发布结果,我将很感兴趣。