Hi Mark!

No, I don't suspect that the GOTO holy war will ever end.  It will just
LOOP/REPEAT forever!!

LOL....sorry I really cracked myself up on that one.

Yes, when reading and writing records to a file, the O/S will eventually
load the entire file into main memory if there is enough room.  However,
there are no read or write statements in the program, and therefore nothing
to stick into main memory in the first place.  Also, since the real program
that is running is Unidata, and just using the compiled P-code as a template
of sorts, my program has to be read completely before execution can begin,
so no read/write benefits could occur from that standpoint, since the INPUT
statement has to be executed before the speedtest begins.

But I ran them again in reverse order just to be uber-sure and they had the
similar results, although both of the runs suffered about a 1 million loop
per second decrease as I have a lot more windows open now.

Allen

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Mark Johnson
Sent: Monday, December 13, 2004 10:35
To: [EMAIL PROTECTED]
Subject: Re: [U2] LOOP or GOTO on READNEXT


Be careful of consecutive speed tests. With memory caching and virtual
memory, the second process benefits from the first process loading and/or
leaving data in memory.

That may invalidate your victory if the second test won.

My 1 cent.

P.S. The GOTO Holy war will never end until it's removed from the compiler
and that ain't gonna happen.


----- Original Message -----
From: "Allen E. Elwood" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 13, 2004 12:36 PM
Subject: RE: [U2] LOOP or GOTO on READNEXT


> Hi Karl,
>
> Thank you for asking that question, 'cause funny as it sounds I never
> thought to do a speed test on this construct.
>
> I didn't include the delete statement because what you really wanted to
test
> was the LOOP/REPEAT vs. the GO construct.  Guess what?  After doing four
> consecutive runs and picking the fastest of each four, LOOP/REPEAT
> wins!!!!!!  LOOP/REPEAT came out at 15.9 Million loops per second while
GOTO
> came out at 14.3 MLPS.  This running on a 2.6ghz P4 w2000 install of
Unidata
> PE.
>
> (Notice I also prefer the EXIT statement in environments that have it)
>
> I actually thought that the GOTO would win, but it appears that the P-code
> processor has been optimized to work faster with loop constructs.
>
> So does this end the GOTO holy war?
> Less Filling, Tastes Better, Goes Faster???
>  ;-)
>
> SPEEDTEST.GOTO
> How long in seconds? ?10
> 14369777 total loops
> 1436977.7 per second
> PC:
>
> SPEEDTEST
> How long in seconds? ?10
> 15921613 total loops
> 1592161.3 per second
> PC:
>
> * Release
> * CUSTOM
> * SPEEDTEST - does what it sounds like
> PRINT 'How long in seconds? ':;INPUT HL
> START = TIME()
> ENDING = START + HL
> COUNTER = 0
> LOOP
>   COUNTER += 1
>   IF TIME() GE ENDING THEN EXIT
> REPEAT
> PRINT COUNTER:' total loops'
> PRINT COUNTER/HL:' per second'
> STOP
>
> * Release
> * CUSTOM
> * SPEEDTEST.GOTO - does what it sounds like
> PRINT 'How long in seconds? ':;INPUT HL
> START = TIME()
> ENDING = START + HL
> COUNTER = 0
> 10
>   COUNTER += 1
>   IF TIME() GE ENDING THEN GOTO 20
> GOTO 10
> 20
> PRINT COUNTER:' total loops'
> PRINT COUNTER/HL:' per second'
> STOP
>
> Allen E. Elwood
> Senior Programmer Analyst
> Sysmark Information Systems, Inc.
> Direct (818) 361-5251
> Fax    (818) 361-5251
> Cell    (818) 359-8162
> Home (818) 361-7217
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of
> [EMAIL PROTECTED]
> Sent: Monday, December 13, 2004 07:33
> To: [EMAIL PROTECTED]
> Subject: [U2] LOOP or GOTO on READNEXT
>
>
> I've seen 2 ways to read a client key, change the length to 6 digits, then
> write it back out, delete the old one and move on:
>
> EXAMPLE 1 of 2:
> !(FIXEMPNO) - Fix the employee number length
>       open '','CUSTEMP' to CF else stopm 'Not'
>       select CF
> 10:   readnext K else stop
>       read REC from CF,K then
>          NK = fmt(K,"R%6")
>          write REC on CF,NK
>          delete CF,K
>       end
>       go 10
>    end
>
> EXAMPLE 2 of 2:
> !(FIXEMPNO) - Fix the employee number length
>       DONE = 0
>       open '','CUSTEMP' to CF else stopm 'Not'
>       select CF
>       loop
>          readnext K else DONE = 1
>       read REC from CF,K then
>          NK = fmt(K,"R%6")
>          write REC on CF,NK
>          delete CF,K
>       end
>       repeat
>    end
>
> My intent is not to start a religious discussion about GO or GOTOs because
> I see that method all over the place and regardless of why, who or
> whatever, my question is, which is faster. (I prefer using loop..repeat
> syntax, FWIW).
>
> --
> Karl L. Pearson
> Director of IT,
> ATS Industrial Supply
> Direct: 801-978-4429
> Toll-free: 800-789-9300 1,29
> Fax: 801-972-3888
> http://www.atsindustrial.com
> [EMAIL PROTECTED]
> -------
> u2-users mailing list
> [EMAIL PROTECTED]
> To unsubscribe please visit http://listserver.u2ug.org/
> -------
> u2-users mailing list
> [EMAIL PROTECTED]
> To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to