[Python-Dev] new buffer in python2.7

Kristján Valur Jónsson kristjan at ccpgames.com
Wed Oct 27 16:32:02 CEST 2010


Sorry, here the tables properly formatted:



Function Name


Inclusive Samples


Exclusive Samples


Inclusive Samples %


Exclusive Samples %


apply_slice


8.997


468


62,23


3,24


_PyObject_GetItem


6.257


400


43,28


2,77


memory_subscript


5.857


1.051


40,51


7,27


_PyMemoryView_FromBuffer


2.642


455


18,27


3,15


memory_dealloc


1.572


297


10,87


2,05


_PyObject_Malloc


1.374


1.374


9,50


9,50


__PyObject_GC_New


1.256


236


8,69


1,63


_PySlice_New


1.211


333


8,38


2,30


slice_dealloc


1.061


769


7,34


5,32


__PyObject_GC_Malloc


1.022


293


7,07


2,03


bytearray_getbuffer


987


354


6,83


2,45


dup_buffer


932


932


6,45


6,45




Function Name


Inclusive Samples


Exclusive Samples


Inclusive Samples %


Exclusive Samples %


apply_slice


3.888


502


48,44


6,25


_PySequence_GetSlice


3.039


350


37,86


4,36


string_slice


2.689


281


33,50


3,50


_PyString_FromStringAndSize


2.409


575


30,01


7,16


[MSVCR90.dll]


1.413


1.407


17,61


17,53


string_dealloc


467


150


5,82


1,87


_PyObject_Malloc


379


379


4,72


4,72


_PyObject_Free


378


378


4,71


4,71


__PyEval_SliceIndex


347


347


4,32


4,32








-----Original Message-----
From: python-dev-bounces+kristjan=ccpgames.com at python.org [mailto:python-dev-bounces+kristjan=ccpgames.com at python.org] On Behalf Of Kristján Valur Jónsson
Sent: Wednesday, October 27, 2010 20:00
To: Antoine Pitrou; python-dev at python.org
Subject: Re: [Python-Dev] new buffer in python2.7



Ah, well in 2.7 you don't have the luxury of a bytes object.  A str() would be similar in 2.7 Anyway, isn't the "bytes" object immutable? In that case, it is not a useful target for a sock.recv_into() call.

Calling getbuffer on a bytearray or a bytes object should be really cheap, so I still don't accept this as a matter of fact situation.



Btw, going to 3.2 isn't a real option for us any time soon.  A lot of companies probably find themselves in a similar situation.  This is why I spend so much effort applying some love to 2.7.  Most of the stuff I locally do to 2.7 I then contribute to python as 3.2 patches.  Someday they'll get backported, no doubt :)



K



-----Original Message-----

From: python-dev-bounces+kristjan=ccpgames.com at python.org [mailto:python-dev-bounces+kristjan=ccpgames.com at python.org] On Behalf Of Antoine Pitrou

Sent: Wednesday, October 27, 2010 19:16

To: python-dev at python.org

Subject: Re: [Python-Dev] new buffer in python2.7





> >Here are micro-benchmarks under 3.2:

>

> > $ ./python -m timeit -s "x = b'x'*10000" "x[:100]"

> > 10000000 loops, best of 3: 0.134 usec per loop $ ./python -m timeit

> > -s "x = memoryview(b'x'*10000)" "x[:100]"

> > 10000000 loops, best of 3: 0.151 usec per loop

>

> That's weird.  The greedy slice needs two memory allocations.  One for

> the ByteArray object itself, one for its cargo.  In total, more that

> 100 bytes.  In contrast, creating the MemoryView object requires only

> one allocation of a few dozen bytes.



It's not a bytearray object, it's a bytes object. It requires only a single allocation since the data is allocated inline.

The memoryview object must also call getbuffer() again on the original object.



Regards



Antoine.





_______________________________________________

Python-Dev mailing list

Python-Dev at python.org<mailto:Python-Dev at python.org>

http://mail.python.org/mailman/listinfo/python-dev

Unsubscribe: http://mail.python.org/mailman/options/python-dev/kristjan%40ccpgames.com



_______________________________________________

Python-Dev mailing list

Python-Dev at python.org<mailto:Python-Dev at python.org>

http://mail.python.org/mailman/listinfo/python-dev

Unsubscribe: http://mail.python.org/mailman/options/python-dev/kristjan%40ccpgames.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20101027/fb32c1c3/attachment-0001.html>


More information about the Python-Dev mailing list