• Victor Stinner's avatar
    Issue #29300: Convert _struct module to Argument Clinic · 3f2d1013
    Victor Stinner yazdı
    * 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.
    3f2d1013
Adı
Son kayıt (commit)
Son güncelleme
..
c-api Loading commit data...
data Loading commit data...
distributing Loading commit data...
distutils Loading commit data...
extending Loading commit data...
faq Loading commit data...
howto Loading commit data...
includes Loading commit data...
install Loading commit data...
installing Loading commit data...
library Loading commit data...
reference Loading commit data...
tools Loading commit data...
tutorial Loading commit data...
using Loading commit data...
whatsnew Loading commit data...
Makefile Loading commit data...
README.txt Loading commit data...
about.rst Loading commit data...
bugs.rst Loading commit data...
conf.py Loading commit data...
contents.rst Loading commit data...
copyright.rst Loading commit data...
glossary.rst Loading commit data...
license.rst Loading commit data...
make.bat Loading commit data...