This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients ezio.melotti, pitrou, vstinner
Date 2012-08-11.15:31:15
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1344699079.65.0.688214286935.issue15612@psf.upfronthosting.co.za>
In-reply-to
Content
> 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%)
-------------+-------------+--------------
History
Date User Action Args
2012-08-11 15:31:19vstinnersetrecipients: + vstinner, pitrou, ezio.melotti
2012-08-11 15:31:19vstinnersetmessageid: <1344699079.65.0.688214286935.issue15612@psf.upfronthosting.co.za>
2012-08-11 15:31:19vstinnerlinkissue15612 messages
2012-08-11 15:31:16vstinnercreate