[xmlsec] C14N 1.0 question and 1.1

Matej Spiller-Muys Matej.Spiller at siol.net
Thu Apr 10 22:14:35 PDT 2008


Thank you for your fast response.

> If you have a lot of namespaces then I can easily believe
> you :) I did not run performance benchmarks but probably
> the simplest way to optimize it is to change from a linear search
> for a matching namespace to a simple binary search. I would
> bet it will give you pretty nice speedup. Next, you can try to
> cache search results (i.e. for nodes on the same level).

No, we tested it with a large xml document (around 300kb) with a nested 
level around 20 or more (because of embeded xslt display transform inside 
document). But not a lot namespaces.
The problem is that you are searching for namespaces to the parent node (for 
each node you go to the parent exactly level of the current node times 
(xmlSearchNS is also doing it) (instead of one time or zero if stored inside 
ns_rendered)).

<a xmlns="bla">
    <b>
        <c>
            <d> -> currently processing namespaces for this node
the problem I see is here ==> you check for node "a" namespaces exactly 4 
times ... for "b" 3 times and for "c" two times ... now if xml depth is 20 
... and that is only for node d.

Suggestion:
-> getting rid of xmlSearchNS
-> creating a ns list when going ONE time to the parent
-> iterating through the list (checking for visible, etc etc) and adding it 
to the output list

Will try to test this solution on top of namespace::* one and will get back 
to you later.

Thanks,
Matej Spiller-Muys




More information about the xmlsec mailing list