##// END OF EJS Templates
Fix #13654, improve performance of auto match for quotes...
Fix #13654, improve performance of auto match for quotes As pointed out in #13654, auto matching of quotes may take a long time if the prefix is long. To be more precise, the longer the text before the first quote, the slower it is. This is all caused by the regex pattern used: `r'^([^"]+|"[^"]*")*$'`, which I suspect is O(2^N) slow. ```python In [1]: text = "function_with_long_nameeee('arg" In [2]: import re In [3]: pattern = re.compile(r"^([^']+|'[^']*')*$") In [4]: %timeit pattern.match(text) 10.3 s ± 67.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) In [5]: %timeit pattern.match("1'") 312 ns ± 0.775 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) In [6]: %timeit pattern.match("12'") 462 ns ± 1.95 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) In [7]: %timeit pattern.match("123'") 766 ns ± 6.32 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) In [8]: %timeit pattern.match("1234'") 1.59 µs ± 20.9 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) ``` But the pattern we want here can actually be detected with a Python implemention in O(N) time.

File last commit:

r13436:0be4498d
r27762:c179c2a5
Show More
ipython.1
60 lines | 2.0 KiB | application/x-troff | GroffLexer
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH IPYTHON 1 "July 15, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7) and groff_man(7)
.\" .SH section heading
.\" .SS secondary section heading
.\"
.\"
.\" To preview this page as plain text: nroff -man ipython.1
.\"
.SH NAME
ipython \- Tools for Interactive Computing in Python.
.SH SYNOPSIS
.B ipython
.RI [ options ] " files" ...
.B ipython subcommand
.RI [ options ] ...
.SH DESCRIPTION
An interactive Python shell with automatic history (input and output), dynamic
object introspection, easier configuration, command completion, access to the
system shell, integration with numerical and scientific computing tools,
web notebook, Qt console, and more.
For more information on how to use IPython, see 'ipython \-\-help',
or 'ipython \-\-help\-all' for all available command\(hyline options.
.SH "ENVIRONMENT VARIABLES"
.sp
.PP
\fIIPYTHONDIR\fR
.RS 4
This is the location where IPython stores all its configuration files. The default
is $HOME/.ipython if IPYTHONDIR is not defined.
You can see the computed value of IPYTHONDIR with `ipython locate`.
.SH FILES
IPython uses various configuration files stored in profiles within IPYTHONDIR.
To generate the default configuration files and start configuring IPython,
do 'ipython profile create', and edit '*_config.py' files located in
IPYTHONDIR/profile_default.
.SH AUTHORS
IPython is written by the IPython Development Team <https://github.com/ipython/ipython>.