1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| Sub Coll_String_Simple()
Dim Coll As Collection
Dim S As String
Dim Msg As String
Dim N As Long
Dim I As Long
Dim T As Single
N = 100000
Msg = "Nombre de tours de boucle : " & Format(N, "# ###")
On Error Resume Next 'permet de zapper l'erreur de Coll.Add si la clé existe déjà
'1er test :
'Nombre de pointeurs pour la chaîne "a"
Set Coll = New Collection
T = Timer
For I = 1 To N
Coll.Add StrPtr("a"), CStr(StrPtr("a"))
Next I
Msg = Msg & vbCrLf & vbCrLf & "1er test : " & vbCrLf & _
"Nombre de pointeurs pour la chaîne ""a"", sans passer par une variable" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
'2nd test :
'Nombre de pointeurs pour une chaîne vide (S non remplit)
Set Coll = New Collection
T = Timer
For I = 1 To N
Coll.Add StrPtr(S), CStr(StrPtr(S))
Next I
Msg = Msg & vbCrLf & vbCrLf & "2eme test : " & vbCrLf & _
"Nombre de pointeurs pour une chaîne vide (variable S sans affectation de valeur)" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
'3eme test :
'Nombre de pointeurs pour la chaîne ""
'la variable S est affectée de sa valeur une fois, avant la boucle
Set Coll = New Collection
T = Timer
S = ""
For I = 1 To N
Coll.Add StrPtr(S), CStr(StrPtr(S))
Next I
Msg = Msg & vbCrLf & vbCrLf & "3eme test : " & vbCrLf & _
"Nombre de pointeurs pour la chaîne """"" & vbCrLf & _
"La variable S est affectée de sa valeur une fois, avant la boucle" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
'4eme test :
'Nombre de pointeurs pour la chaîne "a"
'la variable S est affectée de sa valeur à chaque tour de boucle
Set Coll = New Collection
T = Timer
For I = 1 To N
S = "a"
Coll.Add StrPtr(S), CStr(StrPtr(S))
Next I
Msg = Msg & vbCrLf & vbCrLf & "4eme test : " & vbCrLf & _
"Nombre de pointeurs pour la chaîne ""a""" & vbCrLf & _
"La variable S est affectée de sa valeur à chaque tour de boucle" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
'5eme test :
'Nombre de pointeurs pour la valeur 0
'la variable S est affectée de sa valeur à chaque tour de boucle
Set Coll = New Collection
T = Timer
For I = 1 To N
S = 0
Coll.Add StrPtr(S), CStr(StrPtr(S))
Next I
Msg = Msg & vbCrLf & vbCrLf & "5eme test : " & vbCrLf & _
"Nombre de pointeurs pour la valeur 0" & vbCrLf & _
"La variable S est affectée de sa valeur à chaque tour de boucle" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
'6eme test :
'Nombre de pointeurs pour la valeur 0
'la variable S est affectée de sa valeur une fois, avant la boucle
Set Coll = New Collection
T = Timer
S = 0
For I = 1 To N
Coll.Add StrPtr(S), CStr(StrPtr(S))
Next I
Msg = Msg & vbCrLf & vbCrLf & "6eme test : " & vbCrLf & _
"Nombre de pointeurs pour la valeur 0" & vbCrLf & _
"la variable S est affectée de sa valeur une fois, avant la boucle" & vbCrLf & _
"==> " & Coll.Count & " en " & Timer - T & " sec."
MsgBox Msg
End Sub |
Partager