home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / euphoria / sequence.bas < prev    next >
BASIC Source File  |  1994-03-10  |  3KB  |  135 lines

  1. REM QBasic Array (Sequence) Benchmarks
  2.  
  3. DEFINT A-Z  ' makes it faster, but integers are only 16-bits
  4.  
  5. CONST BENCHTIME = 15
  6. CONST SIZE = 100
  7. CONST INITBATCH = 2000
  8. CONST ADDBATCH = 1000
  9. CONST LOOKUPBATCH = 2000
  10. CONST SLICEBATCH = 5
  11. CONST CONCATBATCH = 5
  12. CONST CONCATSIZE = 5000
  13.  
  14. DIM x(SIZE)
  15. DIM y(SIZE)
  16. DIM z(SIZE)
  17. DIM states$(50)
  18.  
  19. PRINT
  20. PRINT "                QBasic Array Benchmarks"
  21. PRINT
  22. PRINT "* Initializing a length -"; SIZE; "array ---> ";
  23. cycles& = 0
  24. t# = TIMER
  25. WHILE TIMER < t# + BENCHTIME
  26.     FOR j = 1 TO INITBATCH
  27.     FOR k = 1 TO SIZE 
  28.         z(k) = 999
  29.     NEXT k
  30.     NEXT j
  31.     cycles& = cycles& + INITBATCH
  32. WEND
  33. t# = TIMER - t#
  34. n = cycles& / t# 
  35. PRINT n; " initializations per second"
  36.  
  37. PRINT
  38. PRINT "* Adding two length -"; SIZE; "arrays ---> ";
  39.  
  40. FOR i = 1 TO SIZE
  41.     x(i) = RND(1000)
  42.     y(i) = RND(1000)
  43. NEXT i
  44.  
  45. cycles& = 0
  46. t# = TIMER
  47. WHILE TIMER < t# + BENCHTIME
  48.     FOR j = 1 TO ADDBATCH
  49.     FOR k = 1 TO SIZE   ' one-at-a-time loop
  50.         z(k) = x(k) + y(k)
  51.     NEXT k
  52.     NEXT j
  53.     cycles& = cycles& + ADDBATCH
  54. WEND
  55. t# = TIMER - t#
  56. n = cycles& / t# 
  57. PRINT n; " array-adds per second"
  58.  
  59. PRINT
  60. PRINT "* String concatenation ---> ";
  61.  
  62. cycles& = 0
  63. t# = TIMER
  64. WHILE TIMER < t# + BENCHTIME
  65.     FOR i = 1 to CONCATBATCH
  66.         S$ = ""
  67.         FOR j = 1 TO CONCATSIZE
  68.         S$ = S$ + "*"
  69.         NEXT j
  70.     NEXT i
  71.     x& = CONCATBATCH
  72.     x& = x& * CONCATSIZE
  73.     cycles& = cycles& + x&
  74. WEND
  75. t# = TIMER - t#
  76. n = cycles& / t# 
  77. PRINT n; " concatenations per second"
  78.  
  79. PRINT
  80. PRINT "* Substring selection ---> ";
  81.  
  82. cycles& = 0
  83. t# = TIMER
  84. WHILE TIMER < t# + BENCHTIME
  85.     FOR i = 1 to SLICEBATCH
  86.     partial$ = s$
  87.     WHILE LEN(partial$) >= 2
  88.         partial$ = MID$(partial$, 2, LEN(partial$)-2)
  89.     WEND
  90.     NEXT i
  91.     x& = SLICEBATCH
  92.     x& = x& * LEN(s$) / 2
  93.     cycles& = cycles& + x&
  94. WEND
  95. t# = TIMER - t#
  96. n = cycles& / t# 
  97. PRINT n; " substrings per second"
  98.  
  99. DATA "Kentucky", "Alabama", "California", "Washington", "Ohio", "Texas"
  100. DATA "Nevada", "Florida", "Wyoming", "New York", "Maine", "Massachusetts"
  101. DATA "North Carolina", "South Carolina", "North Dakota", "South Dakota"
  102. DATA "Mississippi", "Arizona", "Hawaii", "Alaska", "Oregon", "Michigan"
  103. DATA "Illinois", "Pennsylvania", "Kansas", "Virginia", "New Mexico" 
  104. DATA "Rhode Island", "New Hampshire", "Delaware", "Tennessee", "Colorado"
  105. DATA "Wisconsin", "Vermont", "Indiana", "Maryland", "Connecticut", "Louisiana"
  106. DATA "Missouri", "Minnesota", "Iowa", "Idaho", "Arkansas", "Montana"
  107. DATA "Nebraska", "Georgia", "West Virginia", "Utah", "New Jersey", "Oklahoma"
  108.  
  109. FOR i = 1 TO 50
  110.     READ states$(i)
  111. NEXT i
  112.  
  113. PRINT
  114. PRINT "* Name look-up ---> ";
  115. cycles& = 0
  116. t# = TIMER
  117. WHILE TIMER < t# + BENCHTIME  
  118.     FOR j = 1 TO LOOKUPBATCH
  119.     FOR k = 1 TO 50
  120.         IF states$(k) = "Oklahoma" THEN
  121.         EXIT FOR
  122.         END IF
  123.     NEXT k
  124.     IF k <> 50 THEN
  125.         PRINT "whoops!"
  126.     END IF
  127.     NEXT j
  128.     cycles& = cycles& + LOOKUPBATCH
  129. WEND
  130. t# = TIMER - t#
  131. n = cycles& / t# 
  132. PRINT n; " look-ups per second"
  133.  
  134.  
  135.