forth:rechnervergleiche
Dies ist eine alte Version des Dokuments!
Vergleichsprogramme (Benchmark)
Zum Vergleich kleiner Rechner ist Forth gut geeignet, da der Implemetaionsaufwand gering ist. Hierzu sind kleine Programme mit üblichem Sprachumfang sinnvoll, wie sie auf http://theultimatebenchmark.org/ gezeigt werden.
Ein weiterer Kandidat ist die Collatz-Folge:
- collatz.fc
\ Benchmark mit der Collatz-Funktion \ c[n+1] = if even(c[n]) then c[n]/2 else 3*c[n]+1 fi \ Da der zweite Term immer gerade ist, wird \ c[n+1] = if odd(c[n]) then c[n]/2 else (3*c[n]+1)/2 fi \ Seien r[n] der Rest und q[n] der Quotient von c[n]/2, also c[n] = 2*q[n] + r[n], somit bei r[n] = 1: \ (3*c[n]+1)/2 = 3*q[n] + 2 \ Collatz-Schritt: : cn+1 ( cn -- cm ) 2 /mod swap if 3 * 2 + endif ; \ Collatz-Folge drucken : coll. ( cn -- ) begin dup 1 > while cn+1 dup . repeat drop ( always 1 ) ; \ Collatz-Folge zaehlen : ccnt ( cn -- cnt) 0 swap ( cnt cn ) begin dup 1 > while cn+1 swap 1+ swap repeat drop ; \ Maximum fuer alle Folgen bis k bestimmen : cmax ( k -- max ) 0 swap ( max k ) begin dup 0> while dup ccnt ( max k cnt ) rot ( k cnt max ) max ( k max ) swap ( max k ) 1 - ( max k-1 ) repeat drop ; 32101 cmax . ." = 194 ! " : bench 99 0 do 32101 cmax drop loop ; bench
forth/rechnervergleiche.1507043096.txt.gz · Zuletzt geändert: 2017-10-03 17:04 von rainer