gpt4 book ai didi

performance - vb6 中更快的字符串比较

转载 作者:行者123 更新时间:2023-12-04 04:54:08 25 4
gpt4 key购买 nike

我试图让我的 vb6 应用程序运行得更快,原因是我正在填充 vbaccelerators sgrid 一次大约有 10k 个项目(这是客户的要求)。

我必须为 10k 项中的每一项填充大约 20 列,并且我必须对其中一半以上进行字符串比较,因此我编写了一个字符串比较函数并进行了分析

Function IsEqual(byval value1 as string, Byval value2 as string) as boolean

' content, various versions are below

End function

目前,items = 5000,下面的每个时间都显示了它花费的时间和函数的各种版本:
LCase$(Value1) = LCase$(value2)

时间:29149 毫秒
(StrComp(Value1, value2, 1) = 0 )

时间:30836 毫秒
If StrComp(Value1, value2, 1) = 0 Then
IsEqual = True
Else
IsEqual = False
End If

时间 34180 毫秒
If StrComp(Value1, value2, 1) = 0 Then IsEqual = True

时间 28387 毫秒

计时完成:
Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Declare Function timeGetTime Lib "winmm.dll" () As Long

它以毫秒为单位返回时间。

有没有办法让比较更快?

最佳答案

可能会提高性能的事情包括..

  • 将参数更改为 ByRef
  • 使用 ByVal 参数将变量复制到堆栈上。虽然这通常是一个好主意,但如果您的比较函数表现良好且不会更改变量,则无需制作额外的数据副本。
  • 按需填充网格,
  • 只填充屏幕上显示的网格部分 - 使用网格移动事件跟踪它。甚至还有用于 VB6 的网格控件,通过让您定义“虚拟”项目和引发事件来让您知道需要填充哪些项目来促进这一点。 TList 是我熟悉的那个——我会缓和这个建议,但要注意它的许可模型可以是一个真正的 PITA 工作。
  • 关于performance - vb6 中更快的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012995/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com