Speed Test Results - Example
speed test example

' Itza-Million ... A Speed Test and BASIC Language demonstration program

' Uses multiplications of 1 million-or-more items as a way of checking computation speed on any given PC.  dabo-12

#COMPILE EXE "Itza-Million"
#DIM ALL

 DECLARE FUNCTION AT0(BYVAL RRow AS LONG, BYVAL RCol AS LONG) AS STRING

 DECLARE FUNCTION AT2(BYVAL RRow AS LONG, BYVAL RCol AS LONG, BYVAL RRGB AS LONG) AS STRING

FUNCTION PBMAIN () AS LONG

   LOCAL ZGA AS EXT, ZGB AS EXT, WFOR AS LONG, Clok1 AS SINGLE, Clok2 AS SINGLE
   LOCAL ZGC AS LONG, RowSpot AS LONG, XzitFAR AS LONG, JColor AS LONG
   LOCAL WFAA AS STRING, WFBB AS STRING, GZED AS STRING, Action AS LONG, SKIP AS STRING

   CONSOLE SET LOC 40,80
   CONSOLE SET SCREEN 43, 80
   CURSOR OFF

   KEY 10, CHR$(250)
   KEY 12, CHR$(254)

   SKIP=UCASE$(COMMAND$):' All letters made uppercase
   SKIP=TRIM$(SKIP):'      All leading/trailing spaces removed - very important if command line arguments are to work
                    '      Skip can bypass Gazillion Gag, and allow tests to 100 Million or 1 Billion.

   Action=1:' For initial running of program

   DO
     IF Action=9 THEN EXIT LOOP

     IF Action=1 THEN
        CLS
        ? AT2(03,3,14);"Power-BASIC ";AT2(03,15,15);"Console Compiler Speed Test"
        ? AT2(05,3,11);"Variable ";AT2(5,12,15);"ZGA ";AT2(5,16,11);"is initially equal to ";: COLOR 15: ? "1"
        ? AT2(06,3,11);"Variable ";AT2(6,12,15);"ZGB ";AT2(6,16,11);"is equal to ";: COLOR 15: ? "1.000001"
        ? AT2(09,3,11);"example, the number of multiplications will be shown, along with"
        ? AT2(10,3,11);"the difference, in seconds, between the start and finish times"
        ? AT2(11,3,11);"of the multiplications."

        WFBB="Five"
        SELECT CASE SKIP
          CASE "SKIP","FOUR","BP4","4","44","444","4444","4 4"
               WFBB="Four"

          CASE "TREY","THREE","BP3","3","33","333","3333","3 3"
               WFBB="Three"

        END SELECT

     END IF

     SELECT CASE Action
       CASE 3: WFBB="Three"
       CASE 4: WFBB="Four"
       CASE 5: WFBB="Five"
     END SELECT

     ? AT2(08,3,11);WFBB;" examples of multiplying ZGA by ZGB will be done. In each such  "

     IF Action=1 THEN
        ? AT2(14,3,11);"Press the ";
        COLOR 15: ? "SPACEBAR ";
        COLOR 11: ? "to begin the test."

        DO
          GZED=INKEY$
          IF GZED=CHR$(32) THEN EXIT LOOP
        LOOP

        ? AT0(14,3);STRING$(56,32):' clear out previous text
        Action=8:'                   Done with Action=1 processes. Allows run of all tests, plus the Gazillion gag.

     END IF


     IF Action=3 OR Action=4 OR Action=5 THEN ? AT0(14,3);STRING$(1760,32):' clear out previous test results text

     ? AT2(14,07,11);"Number of"
     ? AT2(15,03,15);"#";AT2(15,7,11);"Multiplications";AT2(15,25,11);"Elasped Time (seconds)"
     ? AT2(15,49,11);"Final Result of ";: COLOR 15: ? "ZGA"

     RowSpot=15

     FOR WFOR = 1 TO 5
         RowSpot = RowSpot+2

         WFAA=USING$("#",WFOR)
         ? AT2(RowSpot,3,15);WFAA;" - "

         WFAA=CHOOSE$(WFOR,"1 Million","10 Million","100 Million","1 Billion","A Gazillion")

         WFBB="Standby - Calculations in Progress"
         IF WFOR=5 THEN WFBB="Standby - Whole Lotta Calculations in Progress"
         ? AT2(RowSpot,7,11);WFAA;AT2(RowSpot,25,7);WFBB

         IF WFOR<5 THEN
            ZGA = 1
            ZGB = 1.000001
            ZGC = CHOOSE(WFOR,6,7,8,9)
            Clok1=0
            Clok2=0

            Clok1 = TIMER

            FOR XzitFAR = 1 TO 10^ZGC
                ZGA = ZGA*ZGB
            NEXT XzitFAR

            Clok2 = TIMER - Clok1

            WFBB=USING$("##.#################",Clok2) + STRING$(21,32)
            JColor=15


         ELSEIF WFOR=5 THEN
            WFBB="Sorry - That's way too many for me!"+ STRING$(15,32)
            SLEEP 2800
            JColor=14

         END IF

         ? AT2(RowSpot,25,JColor);WFBB
         IF JColor=15 THEN ? AT2(RowSpot,48,15);ZGA

         SELECT CASE SKIP
          CASE "SKIP","FOUR","BP4","4","44","444","4444","4 4"
                IF Action>5 THEN Action=4: SKIP=""

          CASE "TREY","THREE","BP3","3","33","333","3333","3 3"
                IF Action>5 THEN Action=3: SKIP=""

         END SELECT

         IF WFOR=Action THEN EXIT FOR:' When Action=3 or 4, the Gazillion gag (WFOR=5, Action=5 or 8) will be bypassed

     NEXT WFOR


     SLEEP 0444
     ? AT2(RowSpot+2,3,14);"TEST OVER"

     ? AT2(RowSpot+5,3,11);"Press ";
     COLOR 15: ? "F-10 ";
     COLOR 11: ? "to repeat the test up to 100 Million."

     ? AT2(RowSpot+7,3,11);"Press ";
     COLOR 15: ? "F-12 ";
     COLOR 11: ? "to repeat the test up to 1 Billion."

     ? AT2(RowSpot+9,3,11);"Press the ";
     COLOR 15: ? "SPACEBAR ";
     COLOR 11: ? "to exit this program."

     Action=8

     DO
       GZED=INKEY$
       IF GZED=CHR$(250) THEN Action=3
       IF GZED=CHR$(254) THEN Action=4
       IF GZED=CHR$(126) THEN Action=5
       IF GZED=CHR$(32) THEN Action=9

       SELECT CASE Action
         CASE 3,4,5,9: EXIT LOOP
       END SELECT
     LOOP

   LOOP UNTIL (Action=9)


   ? AT2(RowSpot+11,3,15);"OK"
   SLEEP 1040

   CONSOLE SET SCREEN 25,80

   COLOR 7,0
   CURSOR ON

'  PowerBasic's Original 100 Million Iterations Demo Code

'    x## = 1
'    y## = 1.000001
'    t!  = Timer
'    For i& = 1 To 100000000
'        x## = x## * y##
'    Next
'    t! = Timer - t!

END FUNCTION


 FUNCTION AT0(BYVAL RRow AS LONG, BYVAL RCol AS LONG) AS STRING
   ' on-screen cursor placement
   LOCATE RRow, RCol
 END FUNCTION


 FUNCTION AT2(BYVAL RRow AS LONG, BYVAL RCol AS LONG, BYVAL RRGB AS LONG) AS STRING
   ' on-screen cursor placement with foreground color
   LOCATE RRow, RCol
   COLOR RRGB
 END FUNCTION

Speed Test Results - Example
speed test example



Keep An Eye On This Keep An Eye On This