Sujet : Re: Stack vs stackless operation
De : mhx (at) *nospam* iae.nl (mhx)
Groupes : comp.lang.forthDate : 26. Feb 2025, 13:35:48
Autres entêtes
Organisation : novaBBS
Message-ID : <a6c9d8a0aa7e1046af7948093e07cff0@www.novabbs.com>
References : 1 2
User-Agent : Rocksolid Light
Results for iForth64.
The runtime of test3 is remarkable. I think not much can be done
about it, given the context.
-marcel
---
VARIABLE V1 7 V1 !
VARIABLE V2 8 V2 !
VARIABLE V3 9 V3 !
: :=: ( a b -- ) \ exchange values among two variables
OVER @ >R DUP @ ROT ! R> SWAP ! ;
: ++ ( a -- ) \ increment variable by one
1 SWAP +! ;
: +> ( a b c -- ) \ add two variables then store result into third one
-ROT @ SWAP @ + SWAP ! ;
: t1a V1 @ V2 @ + V3 ! ; : t1b V1 V2 V3 +> ;
: t2a 1 V1 +! ; : t2b V1 ++ ;
: t3a V1 @ V3 ! V2 @ V1 ! V3 @ V2 ! ; : t3b V1 V2 :=: ;
: TESTa S" TIMER-RESET #100000 0 DO #10000 0 DO " EVALUATE ; IMMEDIATE
: TESTb S" LOOP LOOP 3 SPACES .ELAPSED " EVALUATE ; IMMEDIATE
: test1 CR ." \ TEST1 : " TESTa t1a TESTb TESTa t1b TESTb ;
: test2 CR ." \ TEST2 : " TESTa t2a TESTb TESTa t2b TESTb ;
: test3 CR ." \ TEST3 : " TESTa t3a TESTb TESTa t3b TESTb ;
: TESTS test1 test2 test3 ;
TESTS
\ TEST1 : 1.646 seconds elapsed. 1.661 seconds elapsed.
\ TEST2 : 1.778 seconds elapsed. 1.728 seconds elapsed.
\ TEST3 : 2.194 seconds elapsed. 1.645 seconds elapsed. ok