Dear fellows!
i have written a simple Rexx-Program to calculate the first 150.000
primes, for performance monitoring i collect the number of compares like
this
NR.0 = ANZ /* Prime-Table - STEM */
NR.1 = 2; /* first Prime */
NR.2 = 3; /* 2. Prime */
P=3; /* starting Prime */
N = 2 /* last STEM . nr */
PRI=0 /* reset Prime-Indicator */
VO=0 /* Compare-Operations 1-999999 */
MVO=0 /* Compare-Count-Millions */
DO I=2 TO ANZ
P=P+2; /* perhaps next Prime ? */
DO Until (PRI=1) /* vergleichen bis Primzahl gefunden */
DO J=2 TO N /* von 2. bis letzter errechneter Zahl */
VO=VO+1 /* Vergleiche um 1 erhöhen */
IF (P//NR.J)=0 THEN Do
PRI=0 /* P = no Prime */
P=P+2 /* add 2 to possible Prime */
Leave J /* leave inner Do-Loop */
End
Else PRI=1 /* Prime still possible */
END J
End
N=N+1 /* our next STEM-NR */
NR.N=P /* new PRIME into STEM */
PRI=0 /* reset Prime-Indicator */
IF (N//1000) = 0 then Do
THT = TIME()
LS = TIME("S")
DS = LS - FS
ZVO = RIGHT(VO,15)
FVO = RIGHT(ZVO,20)
/*
---------------------------------------------------------- */
/* following Routine is faster than-> numeric
digits 15 */
/*
---------------------------------------------------------- */
IF SUBSTR(ZVO,9,1) \= " " THEN DO
MVO = MVO +
SUBSTR(ZVO,1,9)
VO =
SUBSTR(ZVO,10,6)
ZVO =
RIGHT(MVO,9)||VO
END
/* --------------------------------------------
*/
/* format Monitor-NR with 1000er Points */
/* --------------------------------------------
*/
SELECT
WHEN SUBSTR(ZVO,12,1)=" " THEN FVO =
RIGHT(ZVO,20)
WHEN SUBSTR(ZVO,9,1) =" " THEN FVO =
SUBSTR(ZVO,1,12)"."SUBSTR(ZVO,13,3)
WHEN SUBSTR(ZVO,6,1) =" " THEN FVO =
SUBSTR(ZVO,1,9)"."SUBSTR(ZVO,10,3)"."SUBSTR(ZVO,13,3)
WHEN SUBSTR(ZVO,3,1) =" " THEN FVO =
SUBSTR(ZVO,1,6)"."SUBSTR(ZVO,7,3)"."SUBSTR(ZVO,10,3)"."SUBSTR(ZVO,13,3)
OTHERWISE FVO =
SUBSTR(ZVO,1,3)"."SUBSTR(ZVO,4,3)"."SUBSTR(ZVO,7,3)"."SUBSTR(ZVO,10,3)"."SUBSTR(ZVO,13,3)
END /* SELECT */
FVO = RIGHT(FVO,20)
SLINE = THT RIGHT(DS,5) "sec" RIGHT(N,6)
"Primzahlen errechnet nach" FVO "Vergleichsoperationen"
say SLINE
FS = LS
RC = 0;
CALL LINEOUT logfile,SLINE /* write Logline */
IF RC <> 0 then Do
Say "CALL LINEOUT" logfile
SLINE "fails with RC" RC
Signal Ende
End
End
END I
When i used the *REXX-Option numeric digits 15* to simplify my own coding,
i got a doubled elapsed time!
Therefore i think it would be nice to delimit the numeric digits option to
single variables.
Of course, i don´t know, what this means for you as developers!
2nd question: when will you release the Windows 64-Bit Release V5
officially?
Yours Sincerely
Franz
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel