homepage

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 larry, methane, python-dev, serhiy.storchaka, vstinner
Date 2017年02月02日.11:37:14
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1486035435.1.0.158630955714.issue29300@psf.upfronthosting.co.za>
In-reply-to
Content
I also prefer Serhiy's struct_fastcall-7.patch over my struct_fastcall-6.patch.
Serhiy Storchaka: "This doesn't make the patch much bigger. Usually such kind of changes are made in one patch."
Well, it's just that you prefer to reduce the number of commits and so fold tiny changes into a single big commit, whereas I now prefer multiple tiny commits. I have not strong preferences between the two ways to commit, so I pushed your patch.
Here is the full commit message, since Roundbot bot only shows the first line:
---
Issue #29300: Convert _struct module to Argument Clinic
* The struct module now requires contiguous buffers.
* Convert most functions and methods of the _struct module to Argument Clinic
* Use "Py_buffer" type for the "buffer" argument. Argument Clinic is
 responsible to create and release the Py_buffer object.
* Use "PyStructObject *" type for self to avoid explicit conversions.
* Add an unit test on the _struct.Struct.unpack_from() method to test passing
 arguments as keywords.
* Rephrase docstrings.
* Rename "fmt" argument to "format" in docstrings and the documentation.
As a side effect, functions and methods which used METH_VARARGS calling
convention like struct.pack() now use the METH_FASTCALL calling convention
which avoids the creation of temporary tuple to pass positional arguments and
so is faster. For example, struct.pack("i", 1) becomes 1.56x faster (-36%)::
 $ ./python -m perf timeit \
 -s 'import struct; pack=struct.pack' 'pack("i", 1)' \
 --compare-to=../default-ref/python
 Median +- std dev: 119 ns +- 1 ns -> 76.8 ns +- 0.4 ns: 1.56x faster (-36%)
 Significant (t=295.91)
Patch co-written with Serhiy Storchaka.
---
So yeah, the "side effect" is that struct.pack("i", 1) becomes 1.56x faster (-36%). Ok, maybe it was my main goal ;-) I also mentioned the "new" (?) contiguous requirement on buffers.
Thanks Serhiy for your multiple reviews, very useful as usual. I like the final result: better documentation, better docstrings and better code!
History
Date User Action Args
2017年02月02日 11:37:15vstinnersetrecipients: + vstinner, larry, methane, python-dev, serhiy.storchaka
2017年02月02日 11:37:15vstinnersetmessageid: <1486035435.1.0.158630955714.issue29300@psf.upfronthosting.co.za>
2017年02月02日 11:37:15vstinnerlinkissue29300 messages
2017年02月02日 11:37:14vstinnercreate

AltStyle によって変換されたページ (->オリジナル) /