Vojtech Fried, 25.07.2012 17:45:
> Second version of Timsort patch, slightly more polished. It builds on my
> gcc, I have fixed some warnings and merged the two headers into one. I
> did not move the code to .c file though, because the sort implementation
> uses some macro magic, i.e. the functions you see in the code are really
> function "templates" and they are "instantiated" with the name and type
> you choose with the macros (basically it is a poor man's C++ template
> system :-). I could remove the macros and specialize the functions for
> libxml xmlNodePtr, but that seems quite ugly to me.

What about moving it all into a .c file, then adding a new entry point at
the end that specialises the preceding code for the exact use case in xpath.c?

Thanks for doing this, BTW, the node set sorting performance is a huge
problem. Not only for very large lists of nodes, but also for multi-step
XPath expressions, which currently result in multiple sorting and
re-sorting steps.

Note that node comparison can be very costly, so another thing to
investigate would be to add a flag to the node set struct that remembers if
it's sorted already. That would allow the sort algorithm to skip to the
merging step directly, instead of traversing the whole node list first.

Stefan
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to