Ian Bicking: the old part of his blog


Have you ever compared Java's performance for Python-style data structures like lists (Vectors) and dictionaries (Hashtables)? It's just a guess, but I think you'll find that Python's structures beat the snot out of Java's, because Python's don't require synchronized methods. They're implicitly synchronized by the GIL. Whereas Java objects need to have locks around each method call.

For Java, this is acceptable *only* because vectors and hashtables aren't on the critical path for performance. Java object fields are accessed using fixed offsets. In Python, those structures are used for *everything* (including all attribute lookups and use of globals), so adding item-specific synchronization kills Python performance dead dead dead. There was a guy who actually made a version of Python without the GIL, and it was "only" 50% SLOWER than Python with the GIL.
Comment on Initial thoughts on Prothon
by Phillip J. Eby


could you describe this more?

that java needs to synchronize every method call?

i've done some java programming (2years), and when i wanted to synchronize, i used synchronize, and when i did not want it, i did not use it.

that's all.

there is absolutely NO need to put synchronize around every method call imho.

# Gabor Farkas