STINNER Victor added the comment: > Victor, your benchmark is buggy (it writes one character at a time).
Oh, it's not what I wanted to test. I attach a new benchmark. Here are the results. PyAccu looks much more appropriate than _PyUnicodeWriter, because it is always faster, except to write 100.000 very long lines. Common platform: CPU model: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz CFLAGS: -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes Bits: int=32, long=64, long long=64, pointer=64 Python unicode implementation: PEP 393 Platform: Linux-3.4.4-4.fc16.x86_64-x86_64-with-fedora-16-Verne Platform of campaign pyaccu: SCM: hg revision=9804aec74d4a tag=tip branch=default date="2012-08-10 18:55 -0400" Date: 2012-08-11 16:53:46 Python version: 3.3.0b1 (default:9804aec74d4a, Aug 11 2012, 16:53:12) [GCC 4.6.3 20120306 (Red Hat 4.6.3-2)] Platform of campaign writer: SCM: hg revision=9804aec74d4a+ tag=tip branch=default date="2012-08-10 18:55 -0400" Date: 2012-08-11 16:50:40 Python version: 3.3.0b1 (default:9804aec74d4a+, Aug 11 2012, 16:33:18) [GCC 4.6.3 20120306 (Red Hat 4.6.3-2)] --------------------------------------+-------------+--------------- 10 lines | pyaccu | writer --------------------------------------+-------------+--------------- reader short line ascii | 1.53 us (*) | 1.46 us writer short line ascii | 4.85 us (*) | 4.48 us (-8%) writer-reader short line ascii | 6.45 us (*) | 5.71 us (-12%) reader short line latin1 | 1.57 us (*) | 1.45 us (-8%) writer short line latin1 | 4.92 us (*) | 4.56 us (-7%) writer-reader short line latin1 | 6.6 us (*) | 5.78 us (-13%) reader short line bmp | 1.64 us (*) | 1.54 us (-6%) writer short line bmp | 5.01 us (*) | 4.43 us (-12%) writer-reader short line bmp | 6.68 us (*) | 5.71 us (-14%) reader short line non-bmp | 1.61 us (*) | 1.59 us writer short line non-bmp | 5.1 us (*) | 4.55 us (-11%) writer-reader short line non-bmp | 6.74 us (*) | 5.66 us (-16%) reader long lines ascii | 103 us (*) | 33.4 us (-68%) writer long lines ascii | 998 ns (*) | 836 ns (-16%) writer-reader long lines ascii | 1.45 us (*) | 1.18 us (-19%) reader long lines latin1 | 105 us (*) | 34.2 us (-67%) writer long lines latin1 | 997 ns (*) | 831 ns (-17%) writer-reader long lines latin1 | 1.47 us (*) | 1.2 us (-18%) reader long lines bmp | 121 us (*) | 85.9 us (-29%) writer long lines bmp | 995 ns (*) | 861 ns (-13%) writer-reader long lines bmp | 1.43 us (*) | 1.13 us (-21%) reader long lines non-bmp | 97.1 us (*) | 99.7 us writer long lines non-bmp | 1 us (*) | 819 ns (-18%) writer-reader long lines non-bmp | 1.4 us (*) | 1.18 us (-16%) reader very long lines ascii | 1.42 us (*) | 1.45 us writer very long lines ascii | 3.04 us (*) | 2.88 us (-5%) writer-reader very long lines ascii | 4.59 us (*) | 4.12 us (-10%) reader very long lines latin1 | 1.57 us (*) | 1.47 us (-7%) writer very long lines latin1 | 3.04 us (*) | 2.73 us (-10%) writer-reader very long lines latin1 | 4.66 us (*) | 4.04 us (-13%) reader very long lines bmp | 1.55 us (*) | 1.55 us writer very long lines bmp | 3.03 us (*) | 2.91 us writer-reader very long lines bmp | 4.72 us (*) | 4.08 us (-14%) reader very long lines non-bmp | 1.55 us (*) | 1.49 us writer very long lines non-bmp | 3.09 us (*) | 2.93 us (-5%) writer-reader very long lines non-bmp | 4.59 us (*) | 4.06 us (-12%) --------------------------------------+-------------+--------------- Total | 525 us (*) | 342 us (-35%) --------------------------------------+-------------+--------------- --------------------------------------+-------------+--------------- 1000 lines | pyaccu | writer --------------------------------------+-------------+--------------- reader short line ascii | 68.2 us (*) | 66.1 us writer short line ascii | 308 us (*) | 307 us writer-reader short line ascii | 378 us (*) | 374 us reader short line latin1 | 72 us (*) | 68.5 us writer short line latin1 | 324 us (*) | 313 us writer-reader short line latin1 | 395 us (*) | 383 us reader short line bmp | 74.8 us (*) | 71.9 us writer short line bmp | 326 us (*) | 303 us (-7%) writer-reader short line bmp | 397 us (*) | 378 us reader short line non-bmp | 72.9 us (*) | 72.6 us writer short line non-bmp | 329 us (*) | 304 us (-8%) writer-reader short line non-bmp | 397 us (*) | 383 us reader long lines ascii | 104 us (*) | 33.8 us (-67%) writer long lines ascii | 1.99 us (*) | 2.52 us (+27%) writer-reader long lines ascii | 4.37 us (*) | 3.45 us (-21%) reader long lines latin1 | 104 us (*) | 33.3 us (-68%) writer long lines latin1 | 2.07 us (*) | 2.55 us (+23%) writer-reader long lines latin1 | 4.51 us (*) | 3.57 us (-21%) reader long lines bmp | 120 us (*) | 80.5 us (-33%) writer long lines bmp | 2.15 us (*) | 2.55 us (+18%) writer-reader long lines bmp | 4.71 us (*) | 3.86 us (-18%) reader long lines non-bmp | 90.6 us (*) | 97.6 us (+8%) writer long lines non-bmp | 2.18 us (*) | 2.68 us (+23%) writer-reader long lines non-bmp | 4.24 us (*) | 4.05 us reader very long lines ascii | 2.53 us (*) | 1.66 us (-34%) writer very long lines ascii | 3.07 us (*) | 3.46 us (+13%) writer-reader very long lines ascii | 6.18 us (*) | 4.89 us (-21%) reader very long lines latin1 | 2.57 us (*) | 1.75 us (-32%) writer very long lines latin1 | 3.16 us (*) | 3.46 us (+10%) writer-reader very long lines latin1 | 6.32 us (*) | 4.98 us (-21%) reader very long lines bmp | 2.7 us (*) | 2.34 us (-14%) writer very long lines bmp | 3.52 us (*) | 3.65 us writer-reader very long lines bmp | 6.73 us (*) | 5.7 us (-15%) reader very long lines non-bmp | 2.45 us (*) | 2.35 us writer very long lines non-bmp | 3.47 us (*) | 3.87 us (+12%) writer-reader very long lines non-bmp | 5.98 us (*) | 5.85 us --------------------------------------+-------------+--------------- Total | 3.63 ms (*) | 3.34 ms (-8%) --------------------------------------+-------------+--------------- --------------------------------------+-------------+--------------- 100000 lines | pyaccu | writer --------------------------------------+-------------+--------------- reader short line ascii | 6.74 ms (*) | 6.43 ms writer short line ascii | 30.7 ms (*) | 29.8 ms writer-reader short line ascii | 37.5 ms (*) | 36.6 ms reader short line latin1 | 7.08 ms (*) | 6.64 ms (-6%) writer short line latin1 | 31.3 ms (*) | 30.1 ms writer-reader short line latin1 | 38.8 ms (*) | 37.5 ms reader short line bmp | 7.46 ms (*) | 6.98 ms (-6%) writer short line bmp | 32 ms (*) | 29 ms (-9%) writer-reader short line bmp | 40.5 ms (*) | 35.9 ms (-11%) reader short line non-bmp | 7.36 ms (*) | 7.23 ms writer short line non-bmp | 33.3 ms (*) | 29.4 ms (-12%) writer-reader short line non-bmp | 40.5 ms (*) | 36.5 ms (-10%) reader long lines ascii | 103 us (*) | 32.6 us (-68%) writer long lines ascii | 59.4 us (*) | 66.5 us (+12%) writer-reader long lines ascii | 220 us (*) | 99.2 us (-55%) reader long lines latin1 | 105 us (*) | 32.2 us (-69%) writer long lines latin1 | 60.2 us (*) | 67.3 us (+12%) writer-reader long lines latin1 | 240 us (*) | 97.6 us (-59%) reader long lines bmp | 122 us (*) | 76.9 us (-37%) writer long lines bmp | 62.1 us (*) | 73.8 us (+19%) writer-reader long lines bmp | 242 us (*) | 151 us (-38%) reader long lines non-bmp | 95.7 us (*) | 92.1 us writer long lines non-bmp | 76.5 us (*) | 90.3 us (+18%) writer-reader long lines non-bmp | 198 us (*) | 173 us (-12%) reader very long lines ascii | 91.6 us (*) | 11.5 us (-87%) writer very long lines ascii | 7.15 us (*) | 11.9 us (+67%) writer-reader very long lines ascii | 145 us (*) | 20.1 us (-86%) reader very long lines latin1 | 110 us (*) | 12 us (-89%) writer very long lines latin1 | 7.52 us (*) | 12.1 us (+61%) writer-reader very long lines latin1 | 165 us (*) | 20.7 us (-87%) reader very long lines bmp | 91.1 us (*) | 46.7 us (-49%) writer very long lines bmp | 12.3 us (*) | 22.5 us (+82%) writer-reader very long lines bmp | 150 us (*) | 61.9 us (-59%) reader very long lines non-bmp | 66.8 us (*) | 66.6 us writer very long lines non-bmp | 22.4 us (*) | 38.4 us (+72%) writer-reader very long lines non-bmp | 108 us (*) | 87.7 us (-19%) --------------------------------------+-------------+--------------- Total | 316 ms (*) | 294 ms (-7%) --------------------------------------+-------------+--------------- -------------+-------------+-------------- Summary | pyaccu | writer -------------+-------------+-------------- 10 lines | 525 us (*) | 342 us (-35%) 1000 lines | 3.63 ms (*) | 3.34 ms (-8%) 100000 lines | 316 ms (*) | 294 ms (-7%) -------------+-------------+-------------- Total | 320 ms (*) | 297 ms (-7%) -------------+-------------+-------------- ---------- Added file: http://bugs.python.org/file26765/bench_stringio2.py _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue15612> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com