| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
causing the profiler to crash on an AssertionError if the same Python
function catches multiple exceptions from C functions.
|
|
|
|
| |
profile.py if available.
|
| |
|
|
|
|
| |
profile.help() point at the library reference instead of profile.doc.
|
|
|
|
| |
there's no need to subclass OptionParser.
|
|
|
|
| |
collate, so setting it back to the function name
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
and one for sort order when using stdout. Uses optparse.
|
| |
|
|
|
|
| |
From SF patch #852334.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
| |
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>).
|
|
|
|
| |
to use assert stmts (was raising unexpected kinds of exceptions).
|
|
|
|
|
|
| |
+ 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.
|
|
|
|
|
| |
hasn't worked in years, docs were wrong, and they aren't interesting
anymore regardless.
|
|
|
|
|
| |
derive Profile subclasses. This patch repairs that, restoring
negative tuple indices. Yuck? You bet.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
This should fix a bug in how time is allocated during exception propogation
(esp. in the presence of finally clauses).
|
|
|
|
| |
"import MacOS", and there *is* a need for "import operator".
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ensure that all the default timers are called as functions, not an
expensive method wrapper around a variety of different functions.
Agressively avoid dictionary lookups.
Modify the dispatch scheme (Profile.trace_dispatch_*(), where * is not
'call', 'exception' or 'return') so that the callables dispatched to
are simple functions and not bound methods -- this reduces the number
of layers of Python call machinery that gets touched.
Remove a couple of duplicate imports from the "if __name__ == ..."
section.
This closes SF patch #430948.
|
|
|
|
|
|
|
|
|
|
| |
good doc strings.)
Fix silly argument handling; was using *args but really wanted 1
optional arg.
XXX Should profile.doc be merged into the documentation and removed
from the Lib directory?
|
| |
|
| |
|
|
|
|
| |
(and yes, "Currintly" also counts <0.5 wink>)
|
|
|
|
|
|
|
|
|
|
| |
comments, docstrings or error messages. I fixed two minor things in
test_winreg.py ("didn't" -> "Didn't" and "Didnt" -> "Didn't").
There is a minor style issue involved: Guido seems to have preferred English
grammar (behaviour, honour) in a couple places. This patch changes that to
American, which is the more prominent style in the source. I prefer English
myself, so if English is preferred, I'd be happy to supply a patch myself ;)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
who writes:
Here is batch 2, as a big collection of CVS context diffs.
Along with moving comments into docstrings, i've added a
couple of missing docstrings and attempted to make sure more
module docstrings begin with a one-line summary.
I did not add docstrings to the methods in profile.py for
fear of upsetting any careful optimizations there, though
i did move class documentation into class docstrings.
The convention i'm using is to leave credits/version/copyright
type of stuff in # comments, and move the rest of the descriptive
stuff about module usage into module docstrings. Hope this is
okay.
|
| |
|
| |
|
|
|
|
| |
This simplified some other places in the code.
|
|
|
|
| |
Suggested by Jim Hugunin.
|
|
|
|
|
|
| |
function is only used when running the calibration code, and it turns
out that recent changes in the timing code caused this statement to
raise an exception.
|
| |
|
|
|
|
|
| |
where we use GetTicks() -- its clock() is a crock, with only 1 second
accuracy, I believe.
|
|
|
|
|
| |
Open files in binary mode
(Jack)
|