Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

Feel The Power!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Feel The Power!

    Just having to test out the raw speed and power of PBCC to see how fast it is and just find a use for having massive arrays, I create the following program. If this doesn't prove the raw speed of PowerBasic, nothing will! On my laptop just 4 seconds to sort an array of 5,000,001 and calculate the average number, minimum and maximum numbers..... I originally had it printing out all 5000001 numbers to the screen, but even printing as fast as possible, it still took too long to print....

    Here's The code....

    Code:
     
    #COMPILE EXE
    #DIM ALL
    #BREAK ON
    SUB FastPrint(Str AS STRING)
        PAGE 2,1
        PRINT Str;
        PCOPY 2,1
        PAGE 1,1
    END SUB
    SUB FastPrintLn(Str AS STRING)
        PAGE 2,1
        PRINT Str
        PCOPY 2,1
        PAGE 1,1
    END SUB
    FUNCTION PBMAIN () AS LONG
    DIM Ar(5000000) AS DWORD
    DIM t AS DWORD
    DIM X AS DWORD
    DIM y AS DWORD
    DIM avg AS DWORD
    DIM Total AS DWORD
    DIM Mx AS DWORD
    DIM First AS INTEGER
    DIM Ticker AS QUAD
     
        RANDOMIZE -TIMER
        COLOR 15
        CALL FastPrintLn(REPEAT$(8,"<)-=[]=-(>"))
        First = TIMER
        TIX Ticker
        Mx = UBOUND(Ar())
        FOR T = 0 TO Mx
            Ar(T) = RND(1,Mx)
        NEXT
        COLOR 11
        CALL FastPrintLn("Array Created and Populated with " + USING$("###,###,###,###",Mx + 1) + " Elements.")
        COLOR 12
        CALL FastPrint("Sorting....")
        ARRAY SORT Ar()
        COLOR 10
        CALL FastPrintLn("Done!")
        COLOR 7
        CALL FastPrint("Averaging Data...")
        Total = 0
        FOR T = 0 TO Mx
           Total = Total + Ar(T)
        NEXT T
        Avg = Total / Mx
        COLOR 9
        CALL FastPrintLn("Done!")
        CALL FastPrintLn("")
        CALL FastPrintLn("")
        COLOR 15
        PAGE 1,1
        PRINT
        PRINT
        CALL FastPrintLn(REPEAT$(10,"<)-[]-(>"))
        PRINT
        COLOR 11
        CALL FastPrintLn("Average = " + Upbfo$("###,###,###,###",Avg))
        CALL FastPrintLn("Total   = " + USING$("###,###,###,###",Total))
        CALL FastPrintLn("Minimum = " + USING$("###,###,###,###",Ar(0)))
        CALL FastPrintLn("Maximum = " + USING$("###,###,###,###",Ar(Mx)))
        CALL FastPrintLn("Time    = " + USING$("###,###,###,###",(TIMER - First)) + " Second(s).")
        TIX END Ticker
        CALL FastPrintLn("Ticks   = " + USING$("###,###,###,###",Ticker))
        COLOR 10
        CALL FastPrintLn("Press Any Key To Continue...")
        PROFILE "JohnProfile.txt"
        WAITKEY$
    END FUNCTION
    5,867,433,384 Ticks (3 seconds) on this run....
Working...
X