Re: [xml] faster replacement libxml.py for python 2.2
- From: Hannu Krosing <hannu tm ee>
- To: veillard redhat com
- Cc: xml gnome org
- Subject: Re: [xml] faster replacement libxml.py for python 2.2
- Date: 05 Jan 2003 06:44:15 +0500
Daniel Veillard kirjutas P, 05.01.2003 kell 01:30:
On Sat, Jan 04, 2003 at 05:08:06PM +0500, Hannu Krosing wrote:
I have modified libxml.py (the handmade part of libxml2.py) to make
use of some new features of python 2.2 , namely
1) replaced __gettattr__() with property()
Okay, I integrated both using
import sys
if float(sys.version[0:3]) < 2.2:
def __getattr__(self, attr):
... existing libxml.py code ...
else:
... your property based definitions ...
see the enclosed result.
2) added an __iter__() method that returns an iterator over subtree of
node
That I couldn't make to work over 1.5 and 2.1 :
It will not work on 1.5 as it just does not support iterators.
It _may_ work with 2.1 with some "from __future__ import xxx2 stuff
veillard:~/XML/python -> python1.5 tst.py
Traceback (innermost last):
File "tst.py", line 17, in ?
nodecount(rec)
File "tst.py", line 10, in nodecount
for node in doc:
File "libxml2.py", line 307, in __getattr__
raise AttributeError,attr
AttributeError: __getitem__
veillard:~/XML/python ->
It seems that defining __getitem__ along to __getattr__ for the
old code would allow to provide that facility on the older framework
and I would really prefer that. Maybe reuse the iterator is possible
it should just be a bit of glue it seems.
The result of replacing __gettattr__() with property() is a 2x speedup
when iterating over tree using node.next and node.children
An additional 12% speedup can be gained by not having a separate xmlCore
class (it is used only by xmlNode) but including the hand-made part
directly in definition of class xmlNode.
Well, that's harder due to the autogeneration of xmlNode,
I was thinking about generating a chunk of code that would be inserted
into the xmlNode in the phase that merges the two (handmade and
generated) parts.
--
Hannu Krosing <hannu tm ee>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]