       profile ?-commands? ?-eval? on

       profile off arrayVar
              This  command  is used to collect a performance profile of a Tcl
              script.  It collects data at the Tcl procedure level. The number
              of  calls to a procedure, and the amount of real and CPU time is
              collected. Time is also collected for the global  context.   The
              procedure  data is collected by bucketing it based on the proce-
              dure call stack, this allows determination of how much  time  is
              spent  in  a  particular  procedure in each of it's calling con-
              texts.

              The on option enables profile data collection. If the  -commands
              option  is specified, data on all commands within a procedure is
              collected as well a procedures.  Multiple occurrences of a  com-
              mand within a procedure are not distinguished, but this data may
              still be useful for analysis.

              The off option turns off profiling and moves the data  collected
              to  the array arrayVar.  The array is address by a list contain-
              ing the procedure call stack.  Element zero is the  top  of  the
              stack,  the  procedure  that  the data is for.  The data in each
              entry is a list consisting of the procedure call count  and  the
              real  time  and  CPU time in milliseconds spent in the procedure
              (but not any procedures it calls).  The  list  is  in  the  form
              {count real cpu}.

              Normally,  the  variable  scope stack is used in reporting where
              time is spent.  Thus upleveled code is reported in  the  context
              that  it  was  executed in, not the context that the uplevel was
              called in.  If the -eval  option  is  specified,  the  procedure
              evaluation  (call)  stack is used instead of the procedure scope
              stack.  Upleveled code is reported in the context of the  proce-
              dure that did the uplevel.

              A  Tcl  procedure  profrep is supplied for reducing the data and
              producing a report.

              On Windows 95/NT, profile  command  only  reports  elasped  real
              time, CPU time is not available and is reported as zero.
