| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Split into three separate types that share everything except the
code for iternext. Saves run time decision making and allows
each iternext function to be specialized.
* Inlined PyDict_Next(). In addition to saving a function call, this
allows a redundant test to be eliminated and further specialization
of the code for the unique needs of each iterator type.
* Created a reusable result tuple for iteritems(). Saves the malloc
time for tuples when the previous result was not kept by client code
(this is the typical use case for iteritems). If the client code
does keep the reference, then a new tuple is created.
Results in a 20% to 30% speedup depending on the size and sparsity
of the dictionary.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Factored constant structure references out of the inner loops for
PyDict_Next(), dict_keys(), dict_values(), and dict_items().
Gave measurable speedups to each (the improvement varies depending
on the sparseness of the dictionary being measured).
* Added a freelist scheme styled after that for tuples. Saves around
80% of the calls to malloc and free. About 10% of the time, the
previous dictionary was completely empty; in those cases, the
dictionary initialization with memset() can be skipped.
|
| |
|
|
|
|
| |
ifilterfalse().
|
| |
|
|
|
|
|
| |
wrong type of database in dbshelve.
* fix a typo in the exception name when checking args
|
|
|
|
| |
correct function)
|
| |
|
|
|
|
|
|
|
| |
2. Touch up help.txt
M config-highlight.def
M help.txt
|
| |
|
|
|
|
|
| |
Code coverage for binascii.c is at 92%.
From SF patch #736962.
|
|
|
|
|
| |
exact turned on. The tiny space savings wasn't worth the additional time
and code.
|
|
|
|
|
|
|
|
| |
2. Convert 1/0 to True/False
3. Fix a couple of long lines
M ColorDelegator.py
M NEWS.txt
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
scheme in situations that likely won't benefit from it. This further
improves memory utilization from Py2.3 which always over-allocates
except for PyList_New().
Situations expected to benefit from over-allocation:
list.insert(), list.pop(), list.append(), and list.extend()
Situations deemed unlikely to benefit:
list_inplace_repeat, list_ass_slice, list_ass_subscript
The most gray area was for listextend_internal() which only runs
when the argument is a list or a tuple. This could be viewed as
a one-time fixed length addition or it could be viewed as wrapping
a series of appends. I left its over-allocation turned on but
could be convinced otherwise.
|
|
|
|
|
|
|
| |
array.extend() now accepts iterable arguments implements as a series
of appends. Besides being a user convenience and matching the behavior
for lists, this the saves memory and cycles that would be used to
create a temporary array object.
|
|
|
|
|
|
|
|
| |
lists. Speeds append() operations and reduces memory requirements
(because of more conservative overallocation).
Paves the way for the feature request for array.extend() to support
arbitrary iterable arguments.
|
|
|
|
|
|
| |
- there were no accessor functions for the global per-database fields
- packages and their dependencies were installed in order in stead
of in reverse order.
|
|
|
|
| |
Bob Ippolito.
|
|
|
|
| |
public API from being exposed by simply including Python.h (as recommended).
|
|
|
|
| |
to its dependencies. Fixes #733819.
|
|
|
|
| |
(Contributed by Greg Chapman.)
|
|
|
|
| |
(Contributed by George Yoshida.)
|
|
|
|
| |
Added support for the copy module.
|
| |
|
|
|
|
| |
Reduces loop overhead by an additional 10%.
|
|
|
|
|
|
|
| |
(Spotted by Michael Hudson.)
* Now that "selflen" is no longer inside a loop, it should not be a
register variable.
|
|
|
|
|
| |
Makes it more likely that all loop operations are in the cache
at the same time.
|
|
|
|
|
| |
and a function call resulting in a 15% reduction of total loop overhead
(as measured by timeit.Timer('pass')).
|
|
|
|
|
| |
three recent optimizations. Aside from reducing code volume, it
increases readability.
|
|
|
|
|
|
|
| |
donated by Kevin Ollivier. This is now the default downloader.
- Added a watcher mechanism, whereby downloaders and unpackers (and,
later builders) can give status feedback to the user. When running
pimp as a command line tool in verbose mode print this output.
|
|
|
|
|
|
|
| |
worth it to in-line the call to PyIter_Next().
Saves another 15% on most list operations that acceptable a general
iterable argument (such as the list constructor).
|
|
|
|
| |
exposing _PyList_Extend().
|
|
|
|
|
|
|
|
| |
avoids creating an intermediate tuple for iterable arguments other than
lists or tuples.
In other words, a+=b no longer requires extra memory when b is not a
list or tuple. The list and tuple cases are unchanged.
|
| |
|
| |
|
| |
|
|
|
|
| |
SF bug #678265.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for xrange and list objects).
* list.__reversed__ now checks the length of the sequence object before
calling PyList_GET_ITEM() because the mutable could have changed length.
* all three implementations are now tranparent with respect to length and
maintain the invariant len(it) == len(list(it)) even when the underlying
sequence mutates.
* __builtin__.reversed() now frees the underlying sequence as soon
as the iterator is exhausted.
* the code paths were rearranged so that the most common paths
do not require a jump.
|
|
|
|
| |
was academic and it was potentially confusing to use.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Replace sprintf message with a constant message string -- this error
message ran on every invocation except straight deletions but it was
only needed when the rhs was not iterable. The message was also
out-of-date and did not reflect that iterable arguments were allowed.
* For inner loops that do not make ref count adjustments, use memmove()
for fast copying and better readability.
* For inner loops that do make ref count adjustments, speed them up by
factoring out the constant structure reference and using vitem[] instead.
|
|
|
|
| |
(Submitted by George Yoshida)
|
|
|
|
|
|
|
|
|
|
| |
* Defer error handling for wrong number of arguments to the
unpack_iterable() function. Cuts the code size almost in half.
* Replace function calls to PyList_Size() and PyTuple_Size() with
their smaller and faster macro counterparts.
* Move the constant structure references outside of the inner loops.
|
|
|
|
|
|
|
|
|
| |
Side-effects were deemed unnecessary and were causing problems at shutdown
time when threads were catching exceptions at start time and then triggering
exceptions trying to call currentThread() after gc'ed. Masked the initial
exception which was deemed bad.
Fixes bug #754449 .
|
|
|
|
| |
longer needed.
|