Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REM =====================================================
- REM bwb_basicbench.bas
- REM Benchmark for BASIC Interpreters/Compilers
- REM Version: 1.1 for bwBasic
- REM Author: Michael Bergmann
- REM Copyright 05/2023
- REM =====================================================
- REM Shell-only!
- REM $NOWINDOW
- DEFDBL A - Z
- REM ----- DECLARATIONS FOR VARS --------
- DIM E1, E2, E3,E4, E5, E6, E7, E8, AV, ALL
- DIM ARRAY(10000), MYARRAY(10000)
- AN$ = ""
- REM ------- Declarations ---------------
- REM DECLARE SUB header(void)
- REM DECLARE SUB do_nothing(void)
- REM DECLARE SUB show_results(void)
- REM DECLARE SUB save_to_file(BYVAL MY$)
- REM DECLARE SUB test1(void)
- REM DECLARE SUB test2(void)
- REM DECLARE SUB test3(void)
- REM DECLARE SUB test4(void)
- REM DECLARE SUB test5(void)
- REM DECLARE SUB test6(void)
- REM DECLARE SUB test7(void)
- REM DECLARE SUB test8(void)
- REM ------- Main Program ---------------
- SHELL "clear"
- CALL header(void)
- REM -- Do Tests --
- CALL test1(void)
- CALL test2(void)
- CALL test3(void)
- CALL test4(void)
- CALL test5(void)
- CALL test6(void)
- CALL test7(void)
- CALL test8(void)
- REM -- show results overview -------------
- PRINT
- CALL show_results(void)
- REM -- ask if file should be saved ------
- PRINT
- INPUT "DO YOU WANT TO SAVE THE RESULTS (Y/N) "; AN$
- IF NOT(AN$="Y" OR AN$="y") THEN
- GOTO AUS
- END IF
- REM -- save to file (if wanted) ---------
- FILESAVE:
- INPUT "FILE TO SAVE: "; MY$
- IF MY$ = "" THEN
- GOTO FILESAVE
- END IF
- CALL save_to_file(MY$)
- AUS:
- PRINT
- PRINT "YOU MADE A HUMBLE BASIC PROGRAM REALLY HAPPY."
- PRINT "BYE!"
- PRINT
- END
- REM ---------- SUB-ROUTINES ------------
- SUB header(void)
- REM =====================================================
- REM Unterprogramm: Programmkopf
- REM =====================================================
- PRINT "-------------------------------"
- PRINT " (bw)BASIC BENCHMARK"
- PRINT " Personal Computer World"
- PRINT " (c) 1990"
- PRINT " REV. 2023 BY MICHA B."
- PRINT "-------------------------------"
- PRINT
- END SUB
- SUB do_nothing(void)
- REM =====================================================
- REM Unterprogramm: do_nothing
- REM =====================================================
- P = 0
- DO
- FOR I=1 TO 10000
- MYARRAY(I) = I
- NEXT I
- I=0
- P = P + 1
- LOOP UNTIL P > 100
- END SUB
- SUB show_results(void)
- REM =====================================================
- REM Unterprogramm: show_results
- REM =====================================================
- PRINT "RESULTS OVERVIEW:"
- PRINT "================="
- PRINT
- PRINT "TEST 1 : ";
- PRINT USING "###.####";E1;
- PRINT " SEC."
- PRINT "TEST 2 : ";
- PRINT USING "###.####";E2;
- PRINT " SEC."
- PRINT "TEST 3 : ";
- PRINT USING "###.####";E3;
- PRINT " SEC."
- PRINT "TEST 4 : ";
- PRINT USING "###.####";E4;
- PRINT " SEC."
- PRINT "TEST 5 : ";
- PRINT USING "###.####";E5;
- PRINT " SEC."
- PRINT "TEST 6 : ";
- PRINT USING "###.####";E6;
- PRINT " SEC."
- PRINT "TEST 7 : ";
- PRINT USING "###.####";E7;
- PRINT " SEC."
- PRINT "TEST 8 : ";
- PRINT USING "###.####";E8;
- PRINT " SEC."
- ALL = (E1+E2+E3+E4+E5+E6+E7+E8)
- AV = (E1+E2+E3+E4+E5+E6+E7+E8)/8
- PRINT "TOTAL : ";
- PRINT USING "###.####";ALL;
- PRINT " SEC."
- PRINT "AVERAGE: ";
- PRINT USING "###.####";AV;
- PRINT " SEC."
- END SUB
- SUB save_to_file(MY$)
- REM =====================================================
- REM Unterprogramm: save_to_file
- REM =====================================================
- OPEN MY$ FOR OUTPUT as 1
- PRINT #1, MY$
- PRINT #1, " "
- PRINT #1, USING "TEST 1 : ###.####";E1
- PRINT #1, USING "TEST 2 : ###.####";E2
- PRINT #1, USING "TEST 3 : ###.####";E3
- PRINT #1, USING "TEST 4 : ###.####";E4
- PRINT #1, USING "TEST 5 : ###.####";E5
- PRINT #1, USING "TEST 6 : ###.####";E6
- PRINT #1, USING "TEST 7 : ###.####";E7
- PRINT #1, USING "TEST 8 : ###.####";E8
- PRINT #1, USING "TOTAL : ###.####";ALL
- PRINT #1, USING "AVERAGE: ###.####";AV
- CLOSE #1
- END SUB
- SUB test1(void)
- REM =====================================================
- REM Unterprogramm: test1
- REM =====================================================
- START=0
- FIN=0
- REM TEST 1
- PRINT "START TEST 1"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- FOR K=1 TO 4000000
- NEXT K
- FIN=TIMER
- E1=FIN-START
- PRINT " TEST 1 : ";
- PRINT USING "###.####";E1;
- PRINT " SEC."
- PRINT "STOP TEST 1"
- END SUB
- SUB test2(void)
- REM =====================================================
- REM Unterprogramm: test2
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 2"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- K=0
- ONCEAGAIN:
- K=K+1
- IF K<1000000 THEN
- GOTO ONCEAGAIN
- END IF
- FIN=TIMER
- E2=FIN-START
- PRINT " TEST 2 : ";
- PRINT USING "###.####";E2;
- PRINT " SEC."
- PRINT "STOP TEST 2"
- END SUB
- SUB test3(void)
- REM =====================================================
- REM Unterprogramm: test3
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 3"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- FOR K=1 TO 5000000
- A=K/K*K+K-K
- NEXT K
- FIN=TIMER
- E3=FIN-START
- PRINT " TEST 3 : ";
- PRINT USING "###.####";E3;
- PRINT " SEC."
- PRINT "STOP TEST 3"
- END SUB
- SUB test4(void)
- REM =====================================================
- REM Unterprogramm: test4
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 4"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- FOR K=1 TO 5000000
- A=K/2*3+4-5
- NEXT K
- FIN=TIMER
- E4=FIN-START
- PRINT " TEST 4 : ";
- PRINT USING "###.####";E4;
- PRINT " SEC."
- PRINT "STOP TEST 4"
- END SUB
- SUB test5(void)
- REM =====================================================
- REM Unterprogramm: test5
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 5"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- GOSUB MYWAIT
- CALL do_nothing(void)
- FIN=TIMER
- E5=FIN-START
- PRINT " TEST 5 : ";
- PRINT USING "###.####";E5;
- PRINT " SEC."
- PRINT "STOP TEST 5"
- END SUB
- SUB test6(void)
- REM =====================================================
- REM Unterprogramm: test6
- REM =====================================================
- PRINT "START TEST 6"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- DIM M(10000)
- I = 0
- FOR L=1 TO 10000
- M(I) = I
- I = I + 1
- NEXT L
- GOSUB MYWAIT
- FIN=TIMER
- E6=FIN-START
- PRINT " TEST 6 : ";
- PRINT USING "###.####";E6;
- PRINT " SEC."
- PRINT "STOP TEST 6"
- END SUB
- SUB test7(void)
- REM =====================================================
- REM Unterprogramm: test7
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 7"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- DIM Z(20000)
- FOR L=1 TO 20000
- A=L/2*3+4-5: Z(L)=A
- NEXT L
- GOSUB MYWAIT
- GOSUB MYWAIT
- FIN=TIMER
- E7=FIN-START
- PRINT " TEST 7 : ";
- PRINT USING "###.####";E7;
- PRINT " SEC."
- PRINT "STOP TEST 7"
- END SUB
- SUB test8(void)
- REM =====================================================
- REM Unterprogramm: test9
- REM =====================================================
- START=0
- FIN=0
- PRINT "START TEST 8"
- PRINT " CALCULATING - BE PATIENT..."
- START=TIMER
- K=0
- TWICEAGAIN:
- K=K+1
- A=K^2
- B=LOG(K)
- C=SIN(K)
- IF K<90000 THEN
- GOTO TWICEAGAIN
- END IF
- CALL do_nothing(void)
- GOSUB MYWAIT
- FIN=TIMER
- E8=FIN-START
- PRINT " TEST 8 : ";
- PRINT USING "###.####";E8;
- PRINT " SEC."
- PRINT "STOP TEST 8"
- END SUB
- REM ----- JUMP MARKS ----------------------------------------
- MYWAIT:
- P = 0
- DO
- FOR I=1 TO 10000
- ARRAY(I) = I
- NEXT I
- I=0
- P = P + 1
- LOOP UNTIL P > 100
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement