home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / historic / v941.tgz / icon.v941src.tar / icon.v941src / tests / bench / post.icn < prev    next >
Text File  |  2000-07-29  |  3KB  |  124 lines

  1. #################################################################
  2. #
  3. #  Support procedures for Icon benchmarking.
  4. #
  5. #################################################################
  6. #
  7. #     The code to be times is bracketed by calls to Init__(name)
  8. #  and Term__(), where name is used for tagging the results.
  9. #  The typical usage is:
  10. #
  11. #    procedure main()
  12. #       [declarations]
  13. #       Init__(name)
  14. #        .
  15. #        .
  16. #        .
  17. #       Term__()
  18. #    end
  19. #
  20. #     If the environment variable OUTPUT is set, program output is
  21. #  not suppressed.
  22. #
  23. #################################################################
  24.  
  25. global Save__, Saves__, Name__
  26.  
  27. # List information before running.
  28. #
  29. procedure Init__(prog)
  30.    Name__ := prog            # program name
  31.    Signature__()            # initial information
  32.    Regions__()
  33.    Time__()
  34.    if getenv("OUTPUT") then {    # if OUTPUT is set, allow output
  35.       write("*** Benchmarking with output ***")
  36.       return
  37.       }
  38.    Save__ := write            # turn off output
  39.    Saves__ := writes
  40.    write := writes := 1
  41.    return
  42. end
  43.  
  44. # List information at termination.
  45.  
  46. procedure Term__()
  47.    if not getenv("OUTPUT") then {    # if OUTPUT is not set, restore output
  48.       write := Save__
  49.       writes := Saves__
  50.       }
  51.                     # final information
  52.    write(Name__," elapsed time = ",Time__())
  53.    Regions__()
  54.    Storage__()
  55.    Collections__()
  56.    return
  57. end
  58.  
  59. # List garbage collections performed.
  60. #
  61. procedure Collections__()
  62.    static labels
  63.    local collections
  64.    
  65.    initial labels := ["total","static","string","block"]
  66.  
  67.    collections := []
  68.    every put(collections,&collections)
  69.    write("collections")
  70.    every i := 1 to *labels do
  71.       write(labels[i],right(collections[i],8))
  72.    return
  73. end
  74.  
  75. # List region sizes.
  76. #
  77. procedure Regions__()
  78.    static labels
  79.    local regions
  80.    
  81.    initial labels := ["static","string","block"]
  82.  
  83.    regions := []
  84.    every put(regions,®ions)
  85.    write("regions")
  86.    every i := 1 to *labels do
  87.       write(labels[i],right(regions[i],8))
  88.    return
  89. end
  90.  
  91. # List relveant implementation information
  92. #
  93. procedure Signature__()
  94.    write(&version)
  95.    write(&host)
  96.    every write(&features)
  97.    return
  98. end
  99.  
  100. # List storage used.
  101. #
  102. procedure Storage__()
  103.    static labels
  104.    local storage
  105.    
  106.    initial labels := ["static","string","block"]
  107.  
  108.    storage := []
  109.    every put(storage,&storage)
  110.    write("storage")
  111.    every i := 1 to *labels do
  112.       write(labels[i],right(storage[i],8))
  113.    return
  114. end
  115.  
  116. # List elapsed time.
  117. #
  118. procedure Time__()
  119.    static lasttime
  120.  
  121.    initial lasttime := &time
  122.    return &time - lasttime
  123. end
  124.