Si vous définissez la taille avent utilisation (Ceci évite les ré-allocation de mémoire à la chaîne), cela aura pour conséquence une rapidité considérable, exemple:
Code : Tout sélectionner
Abc$ = "Abcdefghijklmnopqrstuvwxyz"
If InitialiseStringBuilder(260000000) And IsStringBuilder()
MessageRequester("StringBuilder Initialisation...", "StringBuilder Memory ID = " + Str(StringBuilderGetMemoryID()) + Chr(13) + Chr(10) +
"StringBuilder Memory Size = " + Str(StringBuilderGetMemorySize()) + Chr(13) + Chr(10) +
"StringBuilder Memory Remaining = " + Str(StringBuilderGetMemoryRemaining()) + Chr(13) + Chr(10) +
"StringBuilder Memory Position = " + Str(StringBuilderGetMemoryPosition()))
Time1 = ElapsedMilliseconds()
For I = 1 To 10000000
MemoryID = StringBuilderGetMemoryID()
MemorySize = StringBuilderGetMemorySize()
MemoryRemaining = StringBuilderGetMemoryRemaining()
MemoryPosition = StringBuilderGetMemoryPosition()
OctetsWrite = StringBuilderAddString(Abc$)
Next
Time2 = ElapsedMilliseconds()
MessageRequester("StringBuilder Résultat...", "StringBuilder Memory ID = " + Str(StringBuilderGetMemoryID()) + Chr(13) + Chr(10) +
"StringBuilder Memory Size = " + Str(StringBuilderGetMemorySize()) + Chr(13) + Chr(10) +
"StringBuilder Memory Remaining = " + Str(StringBuilderGetMemoryRemaining()) + Chr(13) + Chr(10) +
"StringBuilder Memory Position = " + Str(StringBuilderGetMemoryPosition()) + Chr(13) + Chr(10) +
"StringBuilder Last Octets Write = " + Str(OctetsWrite) + Chr(13) + Chr(10) +
"Time Elapsed = " + Str(Time2 - Time1) + " Ms.")
Else
MessageRequester("StringBuilder Résultat...", "Erreur, Le StringBuilder n'a pas put être initialisé !", 16)
EndIf
Si vous ne mettez pas de taille, alors le programme réaloura constamment de la mémoire s'il n'en à pas assez, ceci ralentie considérablement le programme !
Désactivé le débogueur aussi pour le test