Dear friends, look at the following sample:
FUNCTION MAIN()
LOCAL cShort := SPACE( 100 )
LOCAL cLong := SPACE( 1024 * 1024 )
LOCAL nSec
LOCAL i
nSec = SECONDS()
FOR i = 1 TO 200000
cShort = STRTRAN( cShort, "TEST", "ABCDEFG" )
NEXT
? SECONDS() - nSec
nSec = SECONDS()
FOR i = 1 TO 200000
IF AT( "TEST", cShort ) > 0
cShort = STRTRAN( cShort, "TEST", "ABCDEFG" )
ENDIF
NEXT
? SECONDS() - nSec
nSec = SECONDS()
FOR i = 1 TO 1000
cLong = STRTRAN( cLong, "TEST", "ABCDEFG" )
NEXT
? SECONDS() - nSec
nSec = SECONDS()
FOR i = 1 TO 1000
IF AT( "TEST", cLong ) > 0
cLong = STRTRAN( cLong, "TEST", "ABCDEFG" )
ENDIF
NEXT
? SECONDS() - nSec
INKEY( 0 )
RETURN NIL
The results on my PC are:
0.33
0.16
10.86
3.38
So I wonder if we can speedup StrTran() just add the AT() test inside
StrTran() C level code.
Let me know if it can be done and if it is a good idea.
EMG
--
EMAG Software Homepage: http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg
The EMG Music page: http://www.emagsoftware.it/emgmusic
------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
xHarbour-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xharbour-developers