[Zope3-dev] zope.etree comments
Martijn Faassen
faassen at infrae.com
Fri Aug 25 11:33:17 EDT 2006
Hi there,
I just noticed the existence of zope.etree. Besides a minor comment on
its use of 'zope' as the namespace package, which I believe is generally
reserved for core components, I have the following more conceptual comment:
There are currently three implementations of the ElementTree API:
ElementTree (original implementation in plain Python)
cElementTree (same API, faster, C-code)
lxml.etree (same API but vastly extended, faster, dependency on
libxml2 etc)
The motivation of zope.etree appears to be to be able to swap out
ElementTree with lxml for performance reasons. While as the developer of
lxml the increased use of lxml makes me happy, I still wonder why this
choice was made. Glancing through the code I cannot find a reference to
cElementTree at all. I wonder why the choice wasn't made to simply swap
out with cElementTree instead?
After all, the reason to do this, as stated, is performance.
cElementTree has performance, is easier to install than lxml (as it
doesn't have dependencies), will ship with Python 2.5, and has the same
API as ElementTree itself.
The main reason to use lxml over cElementTree is not performance
(sometimes it's faster, sometimes slower, depending on what you do) but
is extended features - lxml has a huge featureset. Some of these
features can of course also help with performance, but only if you use
them.
More features cannot be the reason for zope.etree however, as the whole
point is to use lxml and ElementTree interchangably, right?
Regards,
Martijn
More information about the Zope3-dev
mailing list