Re: copymemory basic question



Donald Lessau wrote:
> "Karl E. Peterson" <karl@xxxxxxxx> schrieb im Newsbeitrag...
>>
>> 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.

I really don't understand that... They are so nearly consistent here. Almost
identical, but with an edge on Static. Sometimes they flip back and forth. Has to
be termed insignificant difference here.

> 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

What VB? I was using VB5/SP3.

Other differences are processor (dual-2.4 Xeons here) and OS (W2K/SP4).

> 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)

That's a real difference. Dang. Wish I understood the variation.

Thanks... Karl
--
Working Without a .NET?
http://classicvb.org/petition


.



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
    ... 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)
  • Re: copymemory basic question
    ... > Public Sub SwapStr05(s1 As String, ... > Static lpTmp As Long ... SwapString09 = my previously posted CopyMemory version. ...
    (microsoft.public.vb.winapi)

Loading