3 ms·
Again, I assume the article only served as an example of how in Python you usually end up using dictionaries or classes, which have fundamentally different perf
by w0utert 13y ago
Again, I assume the article only served as an example of how in Python you usually end up using dictionaries or classes, which have fundamentally different performance characteristics compared to C-structs. Yes, you could use tuples instead, in some cases, and get performance characteristics comparable to C structs. Often this is not an option though, and you would still have to use classes or dictionaries. There are many scenarios you could conveniently implement in C using structs, that would end up as an ungodly mess in Python if you would implement them using nothing but tuples.
Just as a thought exercise, try to come up with a way to represent and manipulate an hierarchical, mutable C-structure with 20 fields, using nothing but tuples in Python.
- falcolas 13y agoLike... named tuples? That's the nice thing about python, you're not restricted to using one data type. If you have a data structure that doesn't change, and speed matters, you can use something better suited to the task at hand. Of course, you're not restricted to using one datatype in C either, but the constant comparison this article makes between structs and dictionaries is misleading. Comparing hash map implementations with dictionaries would be much more apt.
- sitkack 13y agonamed tuples are classes, but they use __slots__ so they are sealed to extension thus using less memory. Take a look at the `namedtuple` source, it is a fun little bit of metaprogramming. http://dev.svetlyak.ru/using-slots-for-optimisation-in-python-en/ http://dev.svetlyak.ru/using-slots-for-optimisation-in-pytho... http://hg.python.org/releasing/2.7.6/file/ba31940588b6/Lib/collections.py#l228 http://hg.python.org/releasing/2.7.6/file/ba31940588b6/Lib/c... I am wrong. namedtuple does NOT using slots. weird, wonder why? Because it directly subclasses `tuple` point = namedtuple("Point","x y z",verbose=True) http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-fun-with-python-s-newer-tools-4901215 http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-fun...