Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
Closed as not planned
Description
The optimization introduced in#107374 can be improved as follows:
Current code
ifpredicateisNone:predicate=lambdas:nots.isspace()prefixed_lines= []forlineintext.splitlines(True):ifpredicate(line):prefixed_lines.append(prefix)prefixed_lines.append(line)
Improved code
prefixed_lines= []ifpredicateisNone:forlineintext.splitlines(True):ifnotline.isspace():prefixed_lines.append(prefix)prefixed_lines.append(line)else:forlineintext.splitlines(True):ifpredicate(line):prefixed_lines.append(prefix)prefixed_lines.append(line)
Benchmarks
importtimeitimporttextwrapwithopen("Objects/unicodeobject.c")asf:text=f.read()print(f"indent{len(text.splitlines())} lines.")it=timeit.Timer(lambda:textwrap.indent(text,' '*4))result=it.repeat(number=1000)result.sort()print(f"{result[0]:.4f}msec")
- Current: 7.9305msec
- After: 6.7143msec
However the results are very different between two runs (and my laptop may be dying) so I'd like some confirmation from others.