[Lxml-checkins] r52346 - in lxml/trunk: . src/lxml
scoder at codespeak.net
scoder at codespeak.net
Sun Mar 9 17:53:10 CET 2008
Author: scoder
Date: Sun Mar 9 17:53:04 2008
New Revision: 52346
Modified:
lxml/trunk/ (props changed)
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/apihelpers.pxi
lxml/trunk/src/lxml/etree_defs.h
Log:
r3748 at delle: sbehnel | 2008-03-08 19:54:32 +0100
faster _isString(), faster _getNsTag()
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Sun Mar 9 17:53:04 2008
@@ -30,6 +30,8 @@
Other changes
-------------
+* General API speed-ups.
+
* The benchmark suite now uses tail text in the trees, which makes the
absolute numbers incomparable to previous results.
Modified: lxml/trunk/src/lxml/apihelpers.pxi
==============================================================================
--- lxml/trunk/src/lxml/apihelpers.pxi (original)
+++ lxml/trunk/src/lxml/apihelpers.pxi Sun Mar 9 17:53:04 2008
@@ -1002,7 +1002,8 @@
cdef char* c_ns_end
cdef Py_ssize_t taglen
cdef Py_ssize_t nslen
- if isinstance(tag, QName):
+ # _isString() is much faster than isinstance()
+ if not _isString(tag) and isinstance(tag, QName):
tag = (<QName>tag).text
tag = _utf8(tag)
c_tag = _cstr(tag)
Modified: lxml/trunk/src/lxml/etree_defs.h
==============================================================================
--- lxml/trunk/src/lxml/etree_defs.h (original)
+++ lxml/trunk/src/lxml/etree_defs.h Sun Mar 9 17:53:04 2008
@@ -119,7 +119,9 @@
(__PY_NEW_GLOBAL_EMPTY_TUPLE)), \
NULL))
-#define _isString(obj) PyObject_TypeCheck(obj, &PyBaseString_Type)
+#define _isString(obj) (PyString_CheckExact(obj) || \
+ PyUnicode_CheckExact(obj) || \
+ PyObject_TypeCheck(obj, &PyBaseString_Type))
#define _isElement(c_node) \
(((c_node)->type == XML_ELEMENT_NODE) || \
More information about the lxml-checkins
mailing list