Commit Graph

80 Commits

Author SHA1 Message Date
Giampaolo Rodola' fca677a26a Fix #17197: profile/cProfile modules refactored so that code of run() and runctx() utility functions is not duplicated in both modules. 2013-02-25 11:36:40 +01:00
Giampaolo Rodola' 2f50aaf2ff modernize some modules' code by using with statement around open() 2013-02-12 02:04:27 +01:00
Victor Stinner fe98e2fc83 Issue #14428: Use the new time.perf_counter() and time.process_time() functions
* Replace "time.clock on windows, or time.time" with time.perf_counter()
 * profile module: only use time.process_time() instead of trying different
   functions providing the process time
 * timeit module: use time.perf_counter() by default, time.time() and
   time.clock() can still be used using --time and --clock options
 * pybench program: use time.perf_counter() by default, add support for
   the new time.process_time() and time.perf_counter() functions, but stay
   backward compatible. Use also time.get_clock_info() to display information
   of the timer.
2012-04-29 03:01:20 +02:00
Benjamin Peterson 0f93d3d6f3 strip trailing ws 2011-06-27 09:18:46 -05:00
Benjamin Peterson 8d77069558 update profile license (closes #12417) 2011-06-27 09:14:34 -05:00
Georg Brandl 8e43fbfffa #9428: fix running scripts from profile/cProfile with their own name and the right namespace. Same fix as for trace.py in #1690103. 2010-08-02 12:20:23 +00:00
Ronald Oussoren 94f25283c9 Remove traces of MacOS9 support.
Fix for issue #7908
2010-05-05 19:11:21 +00:00
Victor Stinner e3a1f6d3b7 Issue #4282: Fix the main function of the profile module for a non-ASCII
script, open the file in binary mode and not in text mode with the default
(utf8) encoding.
2010-03-22 01:58:35 +00:00
Benjamin Peterson 90f5ba538b convert shebang lines: python -> python3 2010-03-11 22:53:45 +00:00
Matthias Klose f6b76b0c64 Merged revisions 74773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r74773 | matthias.klose | 2009-09-13 17:09:24 +0200 (So, 13 Sep 2009) | 2 lines

  Issue #6635: Fix profiler printing usage message.
........
2009-09-13 15:18:53 +00:00
Georg Brandl b6b13248e5 Remove the just-removed "help" from __all__. 2009-09-04 17:15:16 +00:00
Georg Brandl 85477afcb6 Remove backwards compatibility stuff from profile/cProfile. 2009-09-04 08:09:32 +00:00
Neal Norwitz 016880229a Kill execfile(), use exec() instead 2007-08-12 00:43:29 +00:00
Guido van Rossum cc2b016125 - PEP 3106: dict.iterkeys(), .iteritems(), .itervalues() are now gone;
and .keys(), .items(), .values() return dict views.

The dict views aren't fully functional yet; in particular, they can't
be compared to sets yet.  but they are useful as "iterator wells".

There are still 27 failing unit tests; I expect that many of these
have fairly trivial fixes, but there are so many, I could use help.
2007-02-11 06:12:03 +00:00
Guido van Rossum be19ed77dd Fix most trivially-findable print statements.
There's one major and one minor category still unfixed:
doctests are the major category (and I hope to be able to augment the
refactoring tool to refactor bona fide doctests soon);
other code generating print statements in strings is the minor category.

(Oh, and I don't know if the compiler package works.)
2007-02-09 05:37:30 +00:00
Georg Brandl 7cae87ca7b Patch #1550800: make exec a function. 2006-09-06 06:51:57 +00:00
Guido van Rossum e2b70bcf74 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Not all code has been fixed yet; this is just a checkpoint...
The C API still has PyDict_HasKey() and _HasKeyString(); not sure
if I want to change those just yet.
2006-08-18 22:13:04 +00:00
Armin Rigo f879024487 test and fix for buggy handling of exceptions raised by C functions,
causing the profiler to crash on an AssertionError if the same Python
function catches multiple exceptions from C functions.
2005-09-20 18:50:13 +00:00
Martin v. Löwis a4dac4094a Patch #645894: Use getrusage for computing the time consumption in
profile.py if available.
2005-03-03 11:39:45 +00:00
Tim Peters b497c106d5 Whitespace normalization. 2005-01-10 16:48:37 +00:00
Johannes Gijsbers c0b194a770 Bug #489256: remove out of date and out of place profile.doc, and let
profile.help() point at the library reference instead of profile.doc.
2005-01-10 09:07:22 +00:00
Johannes Gijsbers 2abe785fee Move code in __name__ == '__main__' block into main() function, rewrite code so
there's no need to subclass OptionParser.
2005-01-09 01:58:02 +00:00
Nicholas Bastin 12ac3e1f49 Using repr() generates entries that the current stats package can't
collate, so setting it back to the function name
2004-07-12 23:38:02 +00:00
Nicholas Bastin 2e39d80925 Fix SF Bug #989066 2004-07-12 13:44:26 +00:00
Tim Peters 4e0e1b6a54 Whitespace normalization. 2004-07-07 20:54:48 +00:00
Nicholas Bastin c69ebe8d50 Enable the profiling of C functions (builtins and extensions) 2004-03-24 21:57:10 +00:00
Guido van Rossum 48713e8798 Add runctx to __all__. 2004-03-23 19:19:21 +00:00
Nicholas Bastin 824b1b2da8 Added command line options for profile.py - one for stats output file
and one for sort order when using stdout.  Uses optparse.
2004-03-23 18:44:39 +00:00
Nicholas Bastin 1eb4bfc657 Added global runctx function to profile to fix SF Bug #716587 2004-03-22 20:12:56 +00:00
Walter Dörwald 70a6b49821 Replace backticks with repr() or "%r"
From SF patch #852334.
2004-02-12 17:35:32 +00:00
Guido van Rossum 38443c1513 Remove unneeded import. 2003-10-22 17:22:18 +00:00
Raymond Hettinger 97aa32b467 Replace a reduce() with sum(). 2003-10-22 16:49:01 +00:00
Guido van Rossum 68468eba63 Get rid of many apply() calls. 2003-02-27 20:14:51 +00:00
Raymond Hettinger e0d4972acc Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
Raymond Hettinger 16e3c427f3 Replace boolean test with is None. 2002-06-01 16:07:16 +00:00
Raymond Hettinger 54f0222547 SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
Fred Drake ee836445d1 Added a missing period at the end of an error message. 2001-12-05 22:27:47 +00:00
Fred Drake d10ed8b179 Minor code cleanups based on comments from Neal Norwitz. 2001-10-17 01:49:50 +00:00
Tim Peters e13cc92e6c Repair key stutter + auto-complete ugliness. 2001-10-09 21:01:31 +00:00
Tim Peters 659a60311d Allow the profiler's calibration constant to be specified in the constructor
call, or via setting an instance or class vrbl.
Rewrote the calibration docs.
Modern boxes are so friggin' fast, and a profiler event does so much work
anyway, that the cost of looking up an instance vrbl (the bias constant)
per profile event just isn't a big deal.
2001-10-09 20:51:19 +00:00
Tim Peters cce092d046 A brand new implementation of Profile.calibrate(). This measures an
actual run of the profiler, instead of timing a simplified simulation of
part of what the profiler does.  It computes a constant about 60% higher
on my Win98SE box than the old method, and the new constant appears much
more realistic.  Deleted the undocumented simple(), instrumented(), and
profiler_simulation() methods (which existed only to support the previous
calibration method).
2001-10-09 05:31:56 +00:00
Tim Peters fb163784ab Typo repair in comment. 2001-10-07 08:49:02 +00:00
Tim Peters 8d061ed75b Guido points out that the comments for self.cur[2] were subtly but
seriously wrong.  This started out by just fixing the docs, but then it
occurred to me that the doc confusion propagated into misleading vrbl names
too, so I also renamed those to match reality.  As a result, INO the time
computations are much easier to understand now (within the limitations of
vast quantities of 3-character names <wink>).
2001-10-07 08:35:44 +00:00
Tim Peters db1ed2aec3 At Guido's request, changed the code that's conceptually asserting stuff
to use assert stmts (was raising unexpected kinds of exceptions).
2001-10-07 04:30:53 +00:00
Tim Peters 6e22149cb6 Repair some longstanding comment errors:
+ The last index in the timing tuple is 4, not 5 (noted by Guido).

+ The poorly named trace_dispatch_i works with float return values too.
2001-10-07 04:02:36 +00:00
Tim Peters 0a1fc4e389 Remove code and docs for the OldProfile and HotProfile classes: code
hasn't worked in years, docs were wrong, and they aren't interesting
anymore regardless.
2001-10-07 03:12:08 +00:00
Tim Peters df5cfd884d The fix to profile semantics broke the miserable but advertised way to
derive Profile subclasses.  This patch repairs that, restoring
negative tuple indices.  Yuck?  You bet.
2001-10-05 23:15:10 +00:00
Guido van Rossum f137f75ab8 Hopefully fix the profiler right. Add a test suite that checks that
it deals correctly with some anomalous cases; according to this test
suite I've fixed it right.

The anomalous cases had to do with 'exception' events: these aren't
generated when they would be most helpful, and the profiler has to
work hard to recover the right information.  The problems occur when C
code (such as hasattr(), which is used as the example here) calls back
into Python code and clears an exception raised by that Python code.
Consider this example:

    def foo():
        hasattr(obj, "bar")

Where obj is an instance from a class like this:

    class C:
        def __getattr__(self, name):
            raise AttributeError

The profiler sees the following sequence of events:

    call (foo)
    call (__getattr__)
    exception (in __getattr__)
    return (from foo)

Previously, the profiler would assume the return event returned from
__getattr__. An if statement checking for this condition and raising
an exception was commented out...  This version does the right thing.
2001-10-04 00:58:24 +00:00
Fred Drake a0bc9993e7 Undo previous patch; it did not quite work out. 2001-10-03 21:12:32 +00:00
Fred Drake 5a28bfbbc7 Change the sense of a test in how the profiler interprets exception events.
This should fix a bug in how time is allocated during exception propogation
(esp. in the presence of finally clauses).
2001-09-27 16:28:42 +00:00