Re: copymemory basic question



"Karl E. Peterson" <karl@xxxxxxxx> schrieb im Newsbeitrag
news:uZPdWForFHA.2592@xxxxxxxxxxxxxxxxxxxxxxx
>
> Public Sub SwapStr05(s1 As String, s2 As String)
> Static lpTmp As Long
> ' Use PutMem4 and GetMem4 directly from runtime.
> ' This method requires no typelibs!
> lpTmp = StrPtr(s1)
> 'Call GetMem4(VarPtr(s1), lpTmp)
> Call PutMem4(VarPtr(s1), StrPtr(s2))
> Call PutMem4(VarPtr(s2), lpTmp)
> End Sub
>

Yeah, sweet!
Of course, I could not resist to test it against a non-Static version, and
again, non-Static came out clearly faster here (VB5, EXE, all opt). As
opposed to your results, weird.

SwapString/Call 1: "a", "b"
VB5-COMPILED/AllCompileOpt ON: 10 x 100000 iterations, 01.09.2005 09:58:00
System: Athlon XP 2000+, 512 RAM, Win XP Pro SP1, IE6.0
Rank - Rel.Time - Abs.Time - Routine - Description
3 - 1.64 - 0.082µs - SwapString09 -
1 - 1.00 - 0.050µs - SwapString10 -
2 - 1.35 - 0.068µs - SwapString11 - Static

SwapString09 = my previously posted CopyMemory version.
SwapString10 = your SwapStr05, but non-Static
SwapString10 = your SwapStr05, Static (as quoted above)

Don

.



Relevant Pages

  • Re: copymemory basic question
    ... Public Sub SwapStr01(s1 As String, ... Static lpTmp As Long ...
    (microsoft.public.vb.winapi)
  • Re: copymemory basic question
    ... > Public Sub SwapStr01(s1 As String, ... > Static lpTmp As Long ...
    (microsoft.public.vb.winapi)
  • Re: copymemory basic question
    ... >> Public Sub SwapStr05(s1 As String, ... >> Static lpTmp As Long ...
    (microsoft.public.vb.winapi)
  • Re: copymemory basic question
    ... there's a DxSwapStr function in Stamina -- ... Public Sub StrSwap01(s1 As String, ... Static lpTmp As Long ...
    (microsoft.public.vb.winapi)
  • Re: copymemory basic question
    ... Private Sub SwapPtrs1(s1 As String, ... Static lpTmp As Long ... > I am sorting string arrays this way myself. ...
    (microsoft.public.vb.winapi)