Provided by: tcllib_2.0+dfsg-4_all bug

NAME

       counter - Procedures for counters and histograms

SYNOPSIS

       package require Tcl 8.5 9

       package require counter ?2.0.6?

       ::counter::init tag args

       ::counter::count tag ?delta? ?instance?

       ::counter::start tag instance

       ::counter::stop tag instance

       ::counter::get tag args

       ::counter::exists tag

       ::counter::names

       ::counter::histHtmlDisplay tag args

       ::counter::reset tag args

________________________________________________________________________________________________________________

DESCRIPTION

       The  counter  package  provides  a  counter  facility  and can compute statistics and histograms over the
       collected data.

       ::counter::init tag args
              This defines a counter with the name tag.  The args determines the characteristics of the counter.
              The args are

              -group name
                     Keep  a  grouped  counter  where  the  name  of  the  histogram  bucket  is   passed   into
                     ::counter::count.

              -hist bucketsize
                     Accumulate  the  counter  into  histogram  buckets of size bucketsize.  For example, if the
                     samples are millisecond time values and  bucketsize  is  10,  then  each  histogram  bucket
                     represents time values of 0 to 10 msec, 10 to 20 msec, 20 to 30 msec, and so on.

              -hist2x bucketsize
                     Accumulate  the  statistic  into  histogram  buckets.   The  size  of  the  first bucket is
                     bucketsize, each other bucket holds values 2 times the size of the  previous  bucket.   For
                     example,  if bucketsize is 10, then each histogram bucket represents time values of 0 to 10
                     msec, 10 to 20 msec, 20 to 40 msec, 40 to 80 msec, and so on.

              -hist10x bucketsize
                     Accumulate the statistic  into  histogram  buckets.   The  size  of  the  first  bucket  is
                     bucketsize,  each  other bucket holds values 10 times the size of the previous bucket.  For
                     example, if bucketsize is 10, then each histogram bucket represents time values of 0 to  10
                     msec, 10 to 100 msec, 100 to 1000 msec, and so on.

              -lastn N
                     Save  the  last  N  values  of  the counter to maintain a "running average" over the last N
                     values.

              -timehist secsPerMinute
                     Keep a time-based histogram.  The counter is summed into a histogram bucket  based  on  the
                     current   time.    There  are  60  per-minute  buckets  that  have  a  size  determined  by
                     secsPerMinute, which is normally 60, but for testing purposes can be  less.   Every  "hour"
                     (i.e., 60 "minutes") the contents of the per-minute buckets are summed into the next hourly
                     bucket.   Every  24  "hours"  the contents of the per-hour buckets are summed into the next
                     daily bucket.  The counter package keeps all time-based histograms in sync,  so  the  first
                     secsPerMinute value seen by the package is used for all subsequent time-based histograms.

       ::counter::count tag ?delta? ?instance?
              Increment  the  counter identified by tag.  The default increment is 1, although you can increment
              by any value, integer  or  real,  by  specifying  delta.   You  must  declare  each  counter  with
              ::counter::init  to  define  the  characteristics  of  counter before you start to use it.  If the
              counter type is -group, then the counter identified by instance is incremented.

       ::counter::start tag instance
              Record the starting time of an interval.  The tag is the name of the counter defined  as  a  -hist
              value-based histogram.  The instance is used to distinguish this interval from any other intervals
              that might be overlapping this one.

       ::counter::stop tag instance
              Record  the  ending  time of an interval.  The delta time since the corresponding ::counter::start
              call for instance is recorded in the histogram identified by tag.

       ::counter::get tag args
              Return statistics about a counter identified by tag.  The args determine what value to return:

              -total Return the total value of the counter.  This is the default if args is not specified.

              -totalVar
                     Return the name of the total variable.  Useful for specifying with -textvariable  in  a  Tk
                     widget.

              -N     Return the number of samples accumulated into the counter.

              -avg   Return the average of samples accumulated into the counter.

              -avgn  Return  the  average  over  the  last  N  samples  taken.   The  N  value  is  set  in  the
                     ::counter::init call.

              -hist bucket
                     If bucket is specified, then the value  in  that  bucket  of  the  histogram  is  returned.
                     Otherwise the complete histogram is returned in array get format sorted by bucket.

              -histVar
                     Return the name of the histogram array variable.

              -histHour
                     Return the complete hourly histogram in array get format sorted by bucket.

              -histHourVar
                     Return the name of the hourly histogram array variable.

              -histDay
                     Return the complete daily histogram in array get format sorted by bucket.

              -histDayVar
                     Return the name of the daily histogram array variable.

              -resetDate
                     Return the clock seconds value recorded when the counter was last reset.

              -all   Return  an  array get of the array used to store the counter.  This includes the total, the
                     number of samples (N), and any  type-specific  information.   This  does  not  include  the
                     histogram array.

       ::counter::exists tag
              Returns 1 if the counter is defined.

       ::counter::names
              Returns a list of all counters defined.

       ::counter::histHtmlDisplay tag args
              Generate  HTML  to display a histogram for a counter.  The args control the format of the display.
              They are:

              -title string
                     Label to display above bar chart

              -unit unit
                     Specify minutes, hours, or days for the time-base histograms.  For value-based  histograms,
                     the unit is used in the title.

              -images url
                     URL of /images directory.

              -gif filename
                     Image for normal histogram bars.  The filename is relative to the -images directory.

              -ongif filename
                     Image for the active histogram bar.  The filename is relative to the -images directory.

              -max N Maximum number of value-based buckets to display.

              -height N
                     Pixel height of the highest bar.

              -width N
                     Pixel width of each bar.

              -skip N
                     Buckets to skip when labeling value-based histograms.

              -format string
                     Format used to display labels of buckets.

              -text boolean
                     If 1, a text version of the histogram is dumped, otherwise a graphical one is generated.

       ::counter::reset tag args
              Resets  the  counter  with  the  name  tag  to  an  initial  state.  The  args  determine  the new
              characteristics of the counter. They have the same meaning as described for ::counter::init.

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes, will undoubtedly contain bugs and  other  problems.   Please
       report  such  in  the  category  counter  of  the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].
       Please also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments  can  be  made  by
       going  to the Edit form of the ticket immediately after its creation, and then using the left-most button
       in the secondary navigation bar.

KEYWORDS

       counting, histogram, statistics, tallying

CATEGORY

       Data structures

tcllib                                                2.0.6                                        counter(3tcl)