[New-bugs-announce] [issue28309] Accelerate string.Template by using formatted string literals
Serhiy Storchaka
report at bugs.python.org
Thu Sep 29 05:01:26 EDT 2016
New submission from Serhiy Storchaka:
Proposed patch makes string.Template compiling template to formatted string literal. Since for now using formatted string literals is the fastest way of formatting strings, this significantly speeds up Template substitution.
$ ./python -m perf timeit -s 'from string import Template; s = Template("$who likes $what")' -- 's.substitute(who="tim", what="ham")'
Unpatched: Median +- std dev: 46.1 us +- 4.2 us
Patched: Median +- std dev: 11.1 us +- 0.5 us
The drawback is that compiling template adds high overhead.
$ ./python -m perf timeit -s 'from string import Template' -- 's = Template("$who likes $what"); s.substitute(who="tim", what="ham")'
Unpatched: Median +- std dev: 51.7 us +- 1.5 us
Patched: Median +- std dev: 672 us +- 38 us
The benefit of using compiled templates is achieved only if make at least 20 substitutions with the same template.
Third-party template engines can use the same approach in Python 3.6+.
----------
components: Library (Lib)
messages: 277690
nosy: eric.smith, georg.brandl, serhiy.storchaka
priority: low
severity: normal
status: open
title: Accelerate string.Template by using formatted string literals
type: performance
versions: Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue28309>
_______________________________________
More information about the New-bugs-announce
mailing list