Title: RE: looking for faster Ideas...

I'm going to have to read this one over a few times.
My brain hurt thinking about it :)

Thanks
George

>-----Original Message-----
>From: Craig Bennett [mailto:[EMAIL PROTECTED]]
>Sent: Tuesday, January 27, 2004 6:21 PM
>To: U2 Users Discussion List
>Subject: Re: looking for faster Ideas...
>
>
>George,
>
>I don't know if this will help you, but part of the problem with a CASE
>statement is that every statement is tested until you have a
>match and EVERY
>statement is tested if there is no match. If you don't have a
>large number
>to remove, this can get very wasteful.
>
>When I need to parse some data and I need to do it fast (and I
>don't care
>that I may write a very long tedious program (sometime I even write a
>program to build the final program)) I find that a state
>machine model with
>computed gosubs based on ASCII character numbers can be quicker.
>
>I started writing the code below, but then remembered I had to work :(
>
>The basic Idea is to only test the characters you need and to
>test them one
>by one where each letter in a match is another internal subroutine eg:
>
>LOOP WHILE POS LE (DATALEN - MATCHLEN) DO
>    * Just match A-Z and we are only looking for names
>starting with A and T
>    CHARCODE = SEQ(MYDATA[POS, 1])        ;* Under UV
>BYTEVAL(MYDATA, POS)
>is MUCH quicker.
>    ON CHARCODE + 64 GOSUB NOMATCH,
>                                                        FIRSTCHARA,
>                                                       
>NOMATCH,    ;* B
>                                                       
>NOMATCH,    ;* C
>                                                       
>NOMATCH,    ;* D
>                                                       
>NOMATCH,    ;* E
>                                                       
>NOMATCH,    ;* F
>                                                       
>NOMATCH,    ;* G
>                                                       
>NOMATCH,    ;* H
>                                                       
>NOMATCH,    ;* I
>                                                       
>NOMATCH,    ;* J
>                                                       
>NOMATCH,    ;* K
>                                                       
>NOMATCH,    ;* L
>                                                       
>NOMATCH,    ;* M
>                                                       
>NOMATCH,    ;* N
>                                                       
>NOMATCH,    ;* O
>                                                       
>NOMATCH,    ;* P
>                                                       
>NOMATCH,    ;* Q
>                                                       
>NOMATCH,    ;* R
>                                                       
>NOMATCH,    ;* S
>                                                        FIRSTCHART,
>                                                       
>NOMATCH,    ;* U
>                                                       
>NOMATCH,    ;* V
>                                                       
>NOMATCH,    ;* W
>                                                       
>NOMATCH,    ;* X
>                                                       
>NOMATCH,    ;* Y
>                                                       
>NOMATCH,    ;* Z
>                                                        NOMATCH
>
>REPEAT
>
>NOMATCH:
>    * Set a flag to false
>    MATCH.NAME = 0
>RETURN
>
>FIRSTCHARA:
>    POS += 1
>    CHARCODE = SEQ(MYDATA[POS, 1])
>    ON CHARCODE + 64 GOSUB NOMATCH,
>                                                       
>NOMATCH,    ;* A
>                                                        SECONDCHARB,
>                                                       
>NOMATCH,    ;* C
>                                                       
>NOMATCH,    ;* D
>                                                       
>NOMATCH,    ;* E
>                                                       
>NOMATCH,    ;* F
>                                                       
>NOMATCH,    ;* G
>                                                       
>NOMATCH,    ;* H
>                                                       
>NOMATCH,    ;* I
>                                                       
>NOMATCH,    ;* J
>                                                       
>NOMATCH,    ;* K
>                                                       
>NOMATCH,    ;* L
>                                                       
>NOMATCH,    ;* M
>                                                       
>NOMATCH,    ;* N
>                                                       
>NOMATCH,    ;* O
>                                                       
>NOMATCH,    ;* P
>                                                       
>NOMATCH,    ;* Q
>                                                       
>NOMATCH,    ;* R
>                                                       
>NOMATCH,    ;* S
>                                                        SECONDCHART,
>                                                       
>NOMATCH,    ;* U
>                                                       
>NOMATCH,    ;* V
>                                                       
>NOMATCH,    ;* W
>                                                       
>NOMATCH,    ;* X
>                                                       
>NOMATCH,    ;* Y
>                                                       
>NOMATCH,    ;* Z
>                                                        NOMATCH
>RETURN
>
>etc
>etc
>etc
>
>Tedious to write, but writing a program generator to build it
>is easy (in an
>include file?) and then your testing is faster.
>
>Use three sets of (many) computed gosubs to match for name,
>then zip, then
>address.
>
>
>No benchmarks, no promises.
>
>
>Craig
>
>_______________________________________________
>u2-users mailing list
>[EMAIL PROTECTED]
>http://www.oliver.com/mailman/listinfo/u2-users
>

_______________________________________________
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users

Reply via email to