### Navigation

- index
- modules |
- next |
- previous |
- Miscellaneous »

# Simple profiling tool

AUTHORS:

- David Harvey (August 2006)
- Martin Albrecht

class `sage.misc.profiler.``Profiler`(systems=[], verbose=False)

  Keeps track of CPU time used between a series of user-defined checkpoints.

  It’s probably not a good idea to use this class in an inner loop :-)

  EXAMPLE:

      sage: def f():                        # not tested
      ...       p = Profiler()              # not tested

  Calling `p(message)` creates a checkpoint:

      sage: p("try factoring 15")           # not tested

  Do something time-consuming:

      sage: x = factor(15)                  # not tested

  You can create a checkpoints without a string; `Profiler` will use the source code instead:

      sage: p()                             # not tested
      sage: y = factor(25)                  # not tested
      sage: p("last step")                  # not tested
      sage: z = factor(35)                  # not tested
      sage: p()                             # not tested

  This will give a nice list of timings between checkpoints:

      sage: print p                         # not tested

  Let’s try it out:

      sage: f()                             # not tested
          3.020s -- try factoring 15
         15.240s -- line 17: y = factor(25)
       5000.190s -- last step

  See also

  `runsnake()`

  Todo

  - Add Pyrex source code inspection (I assume it doesn’t currently do this)
  - Add ability to sort output by time
  - Add option to constructor to print timing immediately when checkpoint is reached
  - Migrate to Pyrex?
  - Add ability to return timings in a more machine-friendly format

  AUTHOR:

  - David Harvey (August 2006)
  `clear`()

    x.__init__(...) initializes x; see help(type(x)) for signature

  `print_last`()

    Prints the last profiler step

### Navigation

- index
- modules |
- next |
- previous |
- Miscellaneous »