diff options
author | Raymond Hettinger <python@rcn.com> | 2007-11-07 02:45:46 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2007-11-07 02:45:46 (GMT) |
commit | dc1d1ba9cfcb8dc1eea9b3960df2b0504ca92727 (patch) | |
tree | fa34a92d567afe1e0eeeefeefabdc8fd506981e8 | |
parent | cdcf887999524cb7ff5ba3cab129d04956333e0d (diff) | |
download | cpython-dc1d1ba9cfcb8dc1eea9b3960df2b0504ca92727.zip cpython-dc1d1ba9cfcb8dc1eea9b3960df2b0504ca92727.tar.gz cpython-dc1d1ba9cfcb8dc1eea9b3960df2b0504ca92727.tar.bz2 |
Add build option for faster loop execution.
-rw-r--r-- | Misc/NEWS | 5 | ||||
-rw-r--r-- | Python/ceval.c | 11 |
2 files changed, 16 insertions, 0 deletions
@@ -1042,6 +1042,11 @@ Tools/Demos Build ----- +- Add a FAST_LOOPS build option that speeds-up looping by trading away + periodic threadstate and signal checking in tight loops. By default, + this option is turned-off. It should only be enabled in debugged, + performance critical applications. + - Patch #786737: Allow building in a tree of symlinks pointing to a readonly source. diff --git a/Python/ceval.c b/Python/ceval.c index 245b08c..f86c4fc 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2159,7 +2159,18 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PREDICTED_WITH_ARG(JUMP_ABSOLUTE); case JUMP_ABSOLUTE: JUMPTO(oparg); +#if FAST_LOOPS + /* Enabling this path speeds-up all while and for-loops by bypassing + the per-loop checks for signals. By default, this should be turned-off + because it prevents detection of a control-break in tight loops like + "while 1: pass". Compile with this option turned-on when you need + the speed-up and do not need break checking inside tight loops (ones + that contain only instructions ending with goto fast_next_opcode). + */ + goto fast_next_opcode; +#else continue; +#endif case GET_ITER: /* before: [obj]; after [getiter(obj)] */ |