Advertisement
micha_b

bwbasic benchmark

May 24th, 2023
800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. REM =====================================================
  2. REM bwb_basicbench.bas
  3. REM Benchmark for BASIC Interpreters/Compilers
  4. REM Version:  1.1 for bwBasic
  5. REM Author:   Michael Bergmann
  6. REM Copyright 05/2023
  7. REM =====================================================
  8.  
  9. REM Shell-only!
  10. REM $NOWINDOW
  11.  
  12. DEFDBL A - Z
  13.  
  14. REM ----- DECLARATIONS FOR VARS --------
  15. DIM E1, E2, E3,E4, E5, E6, E7, E8, AV, ALL
  16. DIM ARRAY(10000), MYARRAY(10000)
  17.  
  18. AN$ = ""
  19.  
  20. REM ------- Declarations ---------------
  21. REM DECLARE SUB header(void)
  22. REM DECLARE SUB do_nothing(void)
  23. REM DECLARE SUB show_results(void)
  24. REM DECLARE SUB save_to_file(BYVAL MY$)
  25. REM DECLARE SUB test1(void)
  26. REM DECLARE SUB test2(void)
  27. REM DECLARE SUB test3(void)
  28. REM DECLARE SUB test4(void)
  29. REM DECLARE SUB test5(void)
  30. REM DECLARE SUB test6(void)
  31. REM DECLARE SUB test7(void)
  32. REM DECLARE SUB test8(void)
  33.  
  34.  
  35. REM ------- Main Program ---------------
  36. SHELL "clear"
  37. CALL header(void)
  38.  
  39. REM -- Do Tests --
  40. CALL test1(void)
  41. CALL test2(void)
  42. CALL test3(void)
  43. CALL test4(void)
  44. CALL test5(void)
  45. CALL test6(void)
  46. CALL test7(void)
  47. CALL test8(void)
  48.  
  49. REM -- show results overview -------------
  50. PRINT
  51. CALL show_results(void)
  52.  
  53. REM -- ask if file should be saved ------
  54. PRINT
  55. INPUT "DO YOU WANT TO SAVE THE RESULTS (Y/N) "; AN$
  56. IF NOT(AN$="Y" OR AN$="y") THEN
  57.     GOTO AUS
  58. END IF
  59.  
  60. REM -- save to file (if wanted) ---------
  61. FILESAVE:
  62. INPUT "FILE TO SAVE: "; MY$
  63. IF MY$ = "" THEN
  64.     GOTO FILESAVE
  65. END IF
  66.  
  67. CALL save_to_file(MY$)
  68.  
  69. AUS:
  70. PRINT
  71. PRINT "YOU MADE A HUMBLE BASIC PROGRAM REALLY HAPPY."
  72. PRINT "BYE!"
  73. PRINT
  74. END
  75.  
  76. REM ---------- SUB-ROUTINES ------------
  77. SUB header(void)
  78.     REM =====================================================
  79.     REM Unterprogramm: Programmkopf
  80.     REM =====================================================
  81.     PRINT "-------------------------------"
  82.     PRINT "    (bw)BASIC BENCHMARK"
  83.     PRINT "    Personal Computer World"
  84.     PRINT "    (c) 1990"
  85.     PRINT "     REV. 2023 BY MICHA B."
  86.     PRINT "-------------------------------"
  87.     PRINT
  88. END SUB
  89.  
  90. SUB do_nothing(void)
  91.     REM =====================================================
  92.     REM Unterprogramm: do_nothing
  93.     REM =====================================================
  94.     P = 0
  95.     DO
  96.         FOR I=1 TO 10000
  97.             MYARRAY(I) = I
  98.         NEXT I
  99.     I=0
  100.     P = P + 1
  101.     LOOP UNTIL P > 100 
  102. END SUB
  103.  
  104. SUB show_results(void)
  105.     REM =====================================================
  106.     REM Unterprogramm: show_results
  107.     REM =====================================================
  108.     PRINT "RESULTS OVERVIEW:"
  109.     PRINT "================="
  110.     PRINT
  111.     PRINT "TEST 1 : ";
  112.     PRINT USING "###.####";E1;
  113.     PRINT " SEC."
  114.  
  115.     PRINT "TEST 2 : ";
  116.     PRINT USING "###.####";E2;
  117.     PRINT " SEC."
  118.  
  119.     PRINT "TEST 3 : ";
  120.     PRINT USING "###.####";E3;
  121.     PRINT " SEC."
  122.  
  123.     PRINT "TEST 4 : ";
  124.     PRINT USING "###.####";E4;
  125.     PRINT " SEC."
  126.  
  127.     PRINT "TEST 5 : ";
  128.     PRINT USING "###.####";E5;
  129.     PRINT " SEC."
  130.  
  131.     PRINT "TEST 6 : ";
  132.     PRINT USING "###.####";E6;
  133.     PRINT " SEC."
  134.  
  135.     PRINT "TEST 7 : ";
  136.     PRINT USING "###.####";E7;
  137.     PRINT " SEC."
  138.  
  139.     PRINT "TEST 8 : ";
  140.     PRINT USING "###.####";E8;
  141.     PRINT " SEC."
  142.  
  143.     ALL = (E1+E2+E3+E4+E5+E6+E7+E8)
  144.     AV = (E1+E2+E3+E4+E5+E6+E7+E8)/8
  145.  
  146.     PRINT "TOTAL  : ";
  147.     PRINT USING "###.####";ALL;
  148.     PRINT " SEC."
  149.  
  150.     PRINT "AVERAGE: ";
  151.     PRINT USING "###.####";AV;
  152.     PRINT " SEC."
  153. END SUB
  154.  
  155. SUB save_to_file(MY$)
  156.     REM =====================================================
  157.     REM Unterprogramm: save_to_file
  158.     REM =====================================================
  159.     OPEN MY$ FOR OUTPUT as 1
  160.     PRINT #1, MY$
  161.     PRINT #1, " "
  162.     PRINT #1, USING "TEST 1 :  ###.####";E1
  163.     PRINT #1, USING "TEST 2 :  ###.####";E2
  164.     PRINT #1, USING "TEST 3 :  ###.####";E3
  165.     PRINT #1, USING "TEST 4 :  ###.####";E4
  166.     PRINT #1, USING "TEST 5 :  ###.####";E5
  167.     PRINT #1, USING "TEST 6 :  ###.####";E6
  168.     PRINT #1, USING "TEST 7 :  ###.####";E7
  169.     PRINT #1, USING "TEST 8 :  ###.####";E8
  170.     PRINT #1, USING "TOTAL  :  ###.####";ALL
  171.     PRINT #1, USING "AVERAGE:  ###.####";AV
  172.     CLOSE #1   
  173. END SUB
  174.  
  175. SUB test1(void)
  176.     REM =====================================================
  177.     REM Unterprogramm: test1
  178.     REM =====================================================
  179.     START=0
  180.     FIN=0
  181.     REM TEST 1
  182.     PRINT "START TEST 1"
  183.     PRINT "   CALCULATING - BE PATIENT..."
  184.     START=TIMER
  185.     FOR K=1 TO 4000000
  186.     NEXT K
  187.     FIN=TIMER
  188.     E1=FIN-START
  189.     PRINT "   TEST 1 : ";
  190.     PRINT USING "###.####";E1;
  191.     PRINT " SEC."
  192.     PRINT "STOP  TEST 1"
  193. END SUB
  194.  
  195. SUB test2(void)
  196.     REM =====================================================
  197.     REM Unterprogramm: test2
  198.     REM =====================================================
  199.     START=0
  200.     FIN=0
  201.     PRINT "START TEST 2"
  202.     PRINT "   CALCULATING - BE PATIENT..."
  203.     START=TIMER
  204.     K=0
  205.     ONCEAGAIN:
  206.     K=K+1
  207.     IF K<1000000 THEN
  208.     GOTO ONCEAGAIN
  209.     END IF
  210.     FIN=TIMER
  211.     E2=FIN-START
  212.     PRINT "   TEST 2 : ";
  213.     PRINT USING "###.####";E2;
  214.     PRINT " SEC."
  215.     PRINT "STOP  TEST 2"
  216. END SUB
  217.  
  218. SUB test3(void)
  219.     REM =====================================================
  220.     REM Unterprogramm: test3
  221.     REM =====================================================
  222.     START=0
  223.     FIN=0
  224.     PRINT "START TEST 3"
  225.     PRINT "   CALCULATING - BE PATIENT..."
  226.     START=TIMER
  227.     FOR K=1 TO 5000000
  228.         A=K/K*K+K-K
  229.     NEXT K
  230.     FIN=TIMER
  231.     E3=FIN-START
  232.     PRINT "   TEST 3 : ";
  233.     PRINT USING "###.####";E3;
  234.     PRINT " SEC."
  235.     PRINT "STOP  TEST 3"
  236. END SUB
  237.  
  238. SUB test4(void)
  239.     REM =====================================================
  240.     REM Unterprogramm: test4
  241.     REM =====================================================
  242.     START=0
  243.     FIN=0
  244.     PRINT "START TEST 4"
  245.     PRINT "   CALCULATING - BE PATIENT..."
  246.     START=TIMER
  247.     FOR K=1 TO 5000000
  248.         A=K/2*3+4-5
  249.     NEXT K
  250.     FIN=TIMER
  251.     E4=FIN-START
  252.     PRINT "   TEST 4 : ";
  253.     PRINT USING "###.####";E4;
  254.     PRINT " SEC."
  255.     PRINT "STOP  TEST 4"
  256. END SUB
  257.  
  258. SUB test5(void)
  259.     REM =====================================================
  260.     REM Unterprogramm: test5
  261.     REM =====================================================
  262.     START=0
  263.     FIN=0
  264.     PRINT "START TEST 5"
  265.     PRINT "   CALCULATING - BE PATIENT..."
  266.     START=TIMER
  267.     GOSUB MYWAIT
  268.     CALL do_nothing(void)
  269.     FIN=TIMER
  270.     E5=FIN-START
  271.     PRINT "   TEST 5 : ";
  272.     PRINT USING "###.####";E5;
  273.     PRINT " SEC."
  274.     PRINT "STOP  TEST 5"
  275. END SUB
  276.  
  277. SUB test6(void)
  278.     REM =====================================================
  279.     REM Unterprogramm: test6
  280.     REM =====================================================
  281.     PRINT "START TEST 6"
  282.     PRINT "   CALCULATING - BE PATIENT..."
  283.     START=TIMER
  284.     DIM M(10000)
  285.     I = 0
  286.     FOR L=1 TO 10000
  287.         M(I) = I
  288.         I = I + 1
  289.     NEXT L
  290.     GOSUB MYWAIT
  291.     FIN=TIMER
  292.     E6=FIN-START
  293.     PRINT "   TEST 6 : ";
  294.     PRINT USING "###.####";E6;
  295.     PRINT " SEC."
  296.     PRINT "STOP  TEST 6"
  297. END SUB
  298.  
  299. SUB test7(void)
  300.     REM =====================================================
  301.     REM Unterprogramm: test7
  302.     REM =====================================================
  303.     START=0
  304.     FIN=0
  305.     PRINT "START TEST 7"
  306.     PRINT "   CALCULATING - BE PATIENT..."
  307.     START=TIMER
  308.     DIM Z(20000)
  309.     FOR L=1 TO 20000
  310.         A=L/2*3+4-5: Z(L)=A
  311.     NEXT L
  312.     GOSUB MYWAIT
  313.     GOSUB MYWAIT
  314.     FIN=TIMER
  315.     E7=FIN-START
  316.     PRINT "   TEST 7 : ";
  317.     PRINT USING "###.####";E7;
  318.     PRINT " SEC."
  319.     PRINT "STOP  TEST 7"
  320. END SUB
  321.  
  322. SUB test8(void)
  323.     REM =====================================================
  324.     REM Unterprogramm: test9
  325.     REM =====================================================
  326.     START=0
  327.     FIN=0
  328.     PRINT "START TEST 8"
  329.     PRINT "   CALCULATING - BE PATIENT..."
  330.     START=TIMER
  331.     K=0
  332.     TWICEAGAIN:
  333.     K=K+1
  334.     A=K^2
  335.     B=LOG(K)
  336.     C=SIN(K)
  337.     IF K<90000 THEN
  338.         GOTO TWICEAGAIN
  339.     END IF
  340.     CALL do_nothing(void)
  341.     GOSUB MYWAIT
  342.     FIN=TIMER
  343.     E8=FIN-START
  344.     PRINT "   TEST 8 : ";
  345.     PRINT USING "###.####";E8;
  346.     PRINT " SEC."
  347.     PRINT "STOP  TEST 8"
  348. END SUB
  349.  
  350. REM ----- JUMP MARKS ----------------------------------------
  351. MYWAIT:
  352. P = 0
  353. DO
  354.     FOR I=1 TO 10000
  355.         ARRAY(I) = I
  356.     NEXT I
  357. I=0
  358. P = P + 1
  359. LOOP UNTIL P > 100
  360. RETURN
Tags: bwBASIC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement