some parser optimizations, xmllint --memory --timing --repeat --stream
* dict.c parser.c xmlstring.c: some parser optimizations,
xmllint --memory --timing --repeat --stream ./db10000.xml
went down from 16.5 secs to 15.5 secs.
Daniel
diff --git a/dict.c b/dict.c
index b56cef2..0a9aebe 100644
--- a/dict.c
+++ b/dict.c
@@ -484,14 +484,30 @@
} else {
for (insert = &(dict->dict[key]); insert->next != NULL;
insert = insert->next) {
+#ifdef __GNUC__
+ if (insert->len == len) {
+ register int tmp = memcmp(insert->name, name, len);
+ if (!tmp)
+ return(insert->name);
+ }
+#else
if ((insert->len == len) &&
(!xmlStrncmp(insert->name, name, len)))
return(insert->name);
+#endif
nbi++;
}
+#ifdef __GNUC__
+ if (insert->len == len) {
+ register int tmp = memcmp(insert->name, name, len);
+ if (!tmp)
+ return(insert->name);
+ }
+#else
if ((insert->len == len) &&
(!xmlStrncmp(insert->name, name, len)))
return(insert->name);
+#endif
}
ret = xmlDictAddString(dict, name, len);