Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 Mid()与Mid$()_Vb6 - Fatal编程技术网

Vb6 Mid()与Mid$()

Vb6 Mid()与Mid$(),vb6,Vb6,根据VB6中的文档,Mid()函数返回一个变量,但Mid$()返回一个字符串,显然这更有效 我的问题是: 我可以使用什么简单的测试来区分性能上的差异?我试着监视一个简单的应用程序执行一些字符串操作,但是没有 明显的差别 值得担心吗?我已经养成了使用$-ized函数的习惯, 但我是否应该推荐团队中的每个人也使用它 不值得担心。这是15-20年前微软Basic的残余,当时一个快速处理器的速度比今天任何东西都慢几个数量级 不过,使用Mid$而不是让VB来确定您的数据类型具有一定的美学吸引力。如果你有任

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

我的问题是:

  • 我可以使用什么简单的测试来区分性能上的差异?我试着监视一个简单的应用程序执行一些字符串操作,但是没有 明显的差别

  • 值得担心吗?我已经养成了使用$-ized函数的习惯, 但我是否应该推荐团队中的每个人也使用它


  • 不值得担心。这是15-20年前微软Basic的残余,当时一个快速处理器的速度比今天任何东西都慢几个数量级

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


    给测量差异的人。Mid$大约是Mid的2.5倍,包括返回VB4的测试

    老实说,我认为这是微不足道的

    也许你可以试试这样的。从下载“High Performance Timer Object”,执行字符串操作的长循环(大约1.000.000次迭代),并测量运行时差异。我所说的“操作”是指:
    Variant
    s的串联,而不是
    String
    s的串联
    Mid()
    Mid$()
    很可能执行相同的操作。奥托-你也可以测试一下


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

    虽然它们之间的性能可以忽略不计,但无论如何,这并不是一个真正的区别

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


    因此,如果您知道您想要使用字符串,那么就继续使用这些函数的$version,它们的行为以及它们在其他表达式中的使用更简单、更容易理解。如果您知道您需要一个变体,并且您的输入是变体,那么请务必使用非$version。

    完全正确!应尽可能避免使用变体。谢谢。有趣的链接,正是我正在寻找的。可能需要考虑包括像耐力这样的第三方图书馆。包括许多用C编写的比VB6快得多的字符串处理例程+1表示计时器对象链接。我将Mid(“ABC”)与Mid$(“ABC”)进行了比较,如le dorfier提供的链接中所示,超过100000000次迭代,并使用高性能秒表测量了持续时间。Mid()花了35.364秒,Mid$()花了13.56秒。因此,它与链接中显示的结果相匹配。我感到惊讶。这确实是一个值得一提的差异。这种差异是可以明确测量的,在处理大量传入数据时是不可忽略的。。。将所有mid/left/right/etc函数更改为其$equality(以及优化一些循环和其他进程,将我的一个应用程序中的刷新率从3秒降低到1/10秒)。。。美元弥补了这一速度增长的大约半秒