does Python support some kind of "casting"
Rich Harkins
rich at worldsinfinite.com
Fri Mar 15 11:04:04 EST 2002
More information about the Python-list mailing list
Fri Mar 15 11:04:04 EST 2002
- Previous message (by thread): does Python support some kind of "casting"
- Next message (by thread): does Python support some kind of "casting"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Friday 15 March 2002 08:17 am, Peter Hansen wrote: > Tino Lange wrote: > > > Yes, that will make a copy. But copying a list is a pretty efficient > > > operation, so no, it isn't really horribly inefficient. Have you tried > > > it and identified this as a bottleneck? How long are your lists anyway? > > > > 3600 Elements each. > > > > No I didn't check if it's a bottleneck. But I immediately didn't feel > > good when writing "return list(newlist)" (the list contains a list of > > strings itself - so it's much stuff to copy) > > Get over it. 3600 elements is nothing, especially once you realize that > the strings themselves are not duplicated, just the references. > > Anyway, the "immediately didn't feel good" thing is probably a feeling > you'd best learn to ignore more. :-) Only optimize when you have actually > identified a bottleneck by profiling. And a "bottleneck" is not something > that runs "slow", but something that runs "too slow" which means you > also need to have a specific requirement in mind before spending your > valuable time optimizing. Once I learned this it has made my programming > life much easier. > > -Peter Isn't there some additional overhead (above copying the underlying C array for the list) in having to bump each refcount of every object contained? This would appear on the surface to be not trivial when the number of referenced objects becomes large, especially considering that many of the object's ref counts may be swapped out or otherwise. But your point about it is true, it is reasonably fast and I certainly can't think of a general solution that would be better. OTOH, I do wonder if some form of list-based buffer() would be useful in these cases, so that you can take a slice of a list, bump the list's refcount without bumping the referenced objects (they're going to have one for the underlying list anyway), and proceed to process as necessary. Granted, the usefulness in small list cases and cases where you want to modify the buffered thing would be quite limited, such a utility might be useful in large-scale list processing. Is anyone out there doing large scale list stuff in Python that would find this useful? Has anyone else tried using buffer() to do similar slicing with strings? I've had mixed results - sometimes it works like a charm, others some standard library won't accept the buffered() strings... Just random thoughts, Rich
- Previous message (by thread): does Python support some kind of "casting"
- Next message (by thread): does Python support some kind of "casting"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list