J'essaie de faire fonctionner mon application vb6 plus rapidement, la raison en est que je remplis vbaccelerators sgrid avec environ 10k articles en une fois (c'est une exigence du client).Comparaison de chaînes plus rapide en vb6
je devais remplir environ 20 colonnes pour chacun des 10k articles, et je dois effectuer la comparaison des chaînes dans environ plus de la moitié d'entre eux, donc j'écrit une fonction de comparaison de chaînes et ne profilage
Function IsEqual(byval value1 as string, Byval value2 as string) as boolean
' content, various versions are below
End function
actuellement les articles = 5000 et chacun des temps ci-dessous montre le temps qu'il a fallu et différentes versions de la fonction:
LCase$(Value1) = LCase$(value2)
temps: 29149 ms
(StrComp(Value1, value2, 1) = 0)
temps: 30836 ms
If StrComp(Value1, value2, 1) = 0 Then
IsEqual = True
Else
IsEqual = False
End If
temps 34180 ms
If StrComp(Value1, value2, 1) = 0 Then IsEqual = True
temps 28387 ms
synchronisation se fait avec:
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
qui retourne le temps en millisecondes.
Y a-t-il un moyen de rendre la comparaison plus rapide?
Je pensais que l'appel d'une API pourrait être plus rapide, mais mes tests utilisant CompareStringA ont montré qu'il était 5 fois plus lent. Cela utilisait une version non compilée. Une idée que j'ai trébuché était d'utiliser des tableaux d'octets. Je ne l'ai pas testé. Bonne chance. –
Le client nécessite VB6? –
Vous devriez jeter un oeil sur le site [VBSpeed] (http://www.xbeat.net/vbspeed/). Ils ont une chaîne textuelle comparer. –