Re: copymemory basic question
- From: "Someone" <nobody@xxxxxxx>
- Date: Tue, 30 Aug 2005 12:55:55 -0400
On a second thought, it seems that the optimizer in VB copies the pointers
to strings instead of swapping the contents. I didn't know that. It seems
that it also keeps track of the last few strings used, even if you assigned
a different value. However, I don't think that it's a good idea to rely on
whether the optimizer can do it or not, it's best to test it with a timing
routine to see which method is faster. Even with this optimization, it might
be slower than "Swapping arrays of Longs representing the Indexes of
strings", because it seems that VB uses internal memory management functions
when it does this during runtime.
Here is a test sample I did and its output:
Private Sub Form_Click()
Dim s1 As String
Dim s2 As String
Dim temp As String
s1 = "abc"
s2 = "def"
temp = ""
' Set some form properties so the output can be seen clearly when in
EXE.
Me.AutoRedraw = True
Me.FontName = "Courier"
Debug.Print " s1", , " s2", , " temp"
Debug.Print "Before: "; VarPtr(s1); StrPtr(s1), VarPtr(s2);
StrPtr(s2), VarPtr(temp); StrPtr(temp)
temp = s1
Debug.Print "After temp = s1: "; VarPtr(s1); StrPtr(s1), VarPtr(s2);
StrPtr(s2), VarPtr(temp); StrPtr(temp)
s1 = s2
Debug.Print "After s1 = s2: "; VarPtr(s1); StrPtr(s1), VarPtr(s2);
StrPtr(s2), VarPtr(temp); StrPtr(temp)
s2 = temp
Debug.Print "After s2 = temp: "; VarPtr(s1); StrPtr(s1), VarPtr(s2);
StrPtr(s2), VarPtr(temp); StrPtr(temp)
End Sub
OUTPUT(Copy to Notepad to see it clearly):
s1 s2 temp
Before: 1308792 1530892 1308788 2193116
1308784 1530932
After temp = s1: 1308792 1530892 1308788 2193116
1308784 2217996
After s1 = s2: 1308792 1530932 1308788 2193116
1308784 2217996
After s2 = temp: 1308792 1530932 1308788 1530892
1308784 2217996
My environment: Windows XP with SP2, and VB6 with SP5.
.
- Follow-Ups:
- Re: copymemory basic question
- From: Tony Proctor
- Re: copymemory basic question
- From: Sam Hobbs
- Re: copymemory basic question
- References:
- copymemory basic question
- From: mscir
- Re: copymemory basic question
- From: Sam Hobbs
- Re: copymemory basic question
- From: Tony Proctor
- Re: copymemory basic question
- From: Sam Hobbs
- Re: copymemory basic question
- From: Tony Proctor
- Re: copymemory basic question
- From: Sam Hobbs
- Re: copymemory basic question
- From: Tony Proctor
- Re: copymemory basic question
- From: Tony Proctor
- Re: copymemory basic question
- From: mscir
- Re: copymemory basic question
- From: J French
- Re: copymemory basic question
- From: Thorsten Albers
- Re: copymemory basic question
- From: Sam Hobbs
- Re: copymemory basic question
- From: Thorsten Albers
- copymemory basic question
- Prev by Date: Re: windows 2003 issues with 16 bit vb
- Next by Date: Re: CopyMemory
- Previous by thread: Re: copymemory basic question
- Next by thread: Re: copymemory basic question
- Index(es):
Relevant Pages
|