Message277689
For now using formatted string literals (PEP498) is the fastest way of formatting strings.
$ ./python -m perf timeit -s 'k = "foo"; v = "bar"' -- '"{!s} = {!r}".format(k, v)'
Median +- std dev: 3.96 us +- 0.17 us
$ ./python -m perf timeit -s 'k = "foo"; v = "bar"' -- 'f"{k!s} = {v!r}"'
Median +- std dev: 1.09 us +- 0.08 us
The compiler could translate new-style formatting with literal format string to the equivalent formatted string literal. The code '{!s} = {!r}'.format(k, v) could be translated to
t1 = k; t2 = v; f'{t1!r} = {t2!s}'; del t1, t2
or even simpler if k and v are initialized local variables.
$ ./python -m perf timeit -s 'k = "foo"; v = "bar"' -- 't1 = k; t2 = v; f"{t1!s} = {t2!r}"; del t1, t2'
Median +- std dev: 1.22 us +- 0.05 us
This is not easy issue and needs first implementing the AST optimizer. |
|
Date |
User |
Action |
Args |
2016-09-29 08:50:04 | serhiy.storchaka | set | recipients:
+ serhiy.storchaka, eric.smith |
2016-09-29 08:50:04 | serhiy.storchaka | set | messageid: <1475139004.07.0.645331102167.issue28308@psf.upfronthosting.co.za> |
2016-09-29 08:50:04 | serhiy.storchaka | link | issue28308 messages |
2016-09-29 08:50:04 | serhiy.storchaka | create | |
|