[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-19 Thread STINNER Victor
STINNER Victor added the comment: Thanks Serhiy for your review. I added a new _PyUnicodeWriter_WriteASCIIString() function to write the separator (", ") and the suffix (",)"). changeset: 87263:d1ca05428c38 user:Victor Stinner date:Tue Nov 19 12:54:53 2013 +0100 files:

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-19 Thread Roundup Robot
Roundup Robot added the comment: New changeset 99141ab08e21 by Victor Stinner in branch 'default': Issue #19513: repr(tuple) now uses _PyUnicodeWriter for better performances http://hg.python.org/cpython/rev/99141ab08e21 -- ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-19 Thread Roundup Robot
Roundup Robot added the comment: New changeset 27461e6a7763 by Victor Stinner in branch 'default': Issue #19513: Disable overallocation of the PyUnicodeWriter before the last write http://hg.python.org/cpython/rev/27461e6a7763 -- ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread Serhiy Storchaka
Serhiy Storchaka added the comment: Old version looks better to me (it is simpler and performance of writing final ",)" is not worth additional complication). -- ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread STINNER Victor
STINNER Victor added the comment: Ok, here is a new version hyper optimized for the final ",)" string :-) -- Added file: http://bugs.python.org/file32696/tuple_repr_writer-2.patch ___ Python tracker ___

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread Roundup Robot
Roundup Robot added the comment: New changeset ead9043f69df by Victor Stinner in branch 'default': Issue #19513: Simplify list_repr() http://hg.python.org/cpython/rev/ead9043f69df -- ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread STINNER Victor
STINNER Victor added the comment: I checked in list_repr_writer-2.patch, thanks Serhiy for your review. And now the patch for repr(tuple). Result of bench_tuple_repr.py: Common platform: CFLAGS: -Wno-unused-result -Werror=declaration-after-statement -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-pro

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread STINNER Victor
Changes by STINNER Victor : Added file: http://bugs.python.org/file32693/bench_tuple_repr.py ___ Python tracker ___ ___ Python-bugs-list maili

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-18 Thread Roundup Robot
Roundup Robot added the comment: New changeset fc7ceb001eec by Victor Stinner in branch 'default': Issue #19513: repr(list) now uses the PyUnicodeWriter API, it is faster than http://hg.python.org/cpython/rev/fc7ceb001eec -- nosy: +python-dev ___ Pyth

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-14 Thread STINNER Victor
STINNER Victor added the comment: 2013/11/14 Serhiy Storchaka : > And what will be PyAccu vs PyUnicodeWriter comparison when increase PyAccu > overallocating rate too? PyAccu doesn't use a Unicode buffer, but a list of strings. PyUnicode_Join() is used to compact the list. PyAccu uses an hardco

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-14 Thread Serhiy Storchaka
Serhiy Storchaka added the comment: And what will be PyAccu vs PyUnicodeWriter comparison when increase PyAccu overallocating rate too? -- ___ Python tracker ___ ___

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-14 Thread STINNER Victor
STINNER Victor added the comment: > Please open a separate issue for the overallocation factor patch. Ok, here you have: #19581. I consider this issue has a dependency of this one, because without a better overallocation factor on Windows, list_repr_writer-2.patch makes repr(list) less effici

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread Serhiy Storchaka
Serhiy Storchaka added the comment: What about longer elements (10**3 or 10**6 characters)? -- ___ Python tracker ___ ___ Python-bugs-

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread Antoine Pitrou
Antoine Pitrou added the comment: Please open a separate issue for the overallocation factor patch. -- ___ Python tracker ___ ___ Pyth

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread STINNER Victor
STINNER Victor added the comment: writer_overallocate_factor.patch: patch for change the overallocation factor from 25% to 50% on Windows. See also issues #14716 and #14744 which contains various benchmarks on string formatting functions. -- Added file: http://bugs.python.org/file3252

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread STINNER Victor
STINNER Victor added the comment: Oops, writer.min_length was not computed correctly :-/ The separator length is 2 characters (", "), not 1. -- Added file: http://bugs.python.org/file32522/list_repr_writer-2.patch ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread STINNER Victor
STINNER Victor added the comment: > You shouldn't cache Py_SIZE(v) because it can be changed during iteration. Oops, I fixed the code on my PC, but I generated the patch before fixing this issue. I agree that Py_SIZE(v) should not be cached. > Due to benchmark results in issue15381 I afraid th

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread Serhiy Storchaka
Serhiy Storchaka added the comment: You shouldn't cache Py_SIZE(v) because it can be changed during iteration. Due to benchmark results in issue15381 I afraid this patch will be much slower on Windows. -- ___ Python tracker

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread STINNER Victor
STINNER Victor added the comment: I tried different overallocator factors: * writer (current factor): 25% (1/4) * writer50: 50% (1/2) * writer100: 100% (double the buffer) -+-++--- Tests    |  writer |  

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-07 Thread STINNER Victor
STINNER Victor added the comment: Results on Windows 7. Common platform: Python unicode implementation: PEP 393 Timer info: namespace(adjustable=False, implementation='QueryPerformanceCounter( )', monotonic=True, resolution=1e-08) Timer: time.perf_counter Platform: Windows-7-6.1.7601-SP1 CFLAGS:

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-06 Thread STINNER Victor
STINNER Victor added the comment: bench_list_repr.py: benchmark script. It would be interesting to run it on Windows, performances of realloc() may be different. Result on my Linux box: Common platform: Python unicode implementation: PEP 393 Platform: Linux-3.9.4-200.fc18.x86_64-x86_64-with-fed

[issue19513] Use PyUnicodeWriter instead of PyAccu in repr(tuple) and repr(list)

2013-11-06 Thread STINNER Victor
New submission from STINNER Victor: PyUnicodeWriter is (a little bit) more efficient than PyAccu to build Unicode strings. Attached patch list_repr_writer.patch modify list_repr() to use PyUnicodeWriter. -- files: list_repr_writer.patch keywords: patch messages: 202298 nosy: haypo, pit