- From: Pratik Datta <pratik.datta@oracle.com>
- Date: Mon, 04 May 2009 13:33:13 -0700
- To: XMLSec WG Public List <public-xmlsec@w3.org>
- Message-ID: <49FF5109.9000505@oracle.com>
Here are some performance numbers that demonstrate
a) how subtree based canonicalization costs almost same as XML
serialization
b) how nodeset based canonicalization is really bad for performance
Consider the following four algorithms
* Algorithm A : Plain serialization
* Algorithm B: The very efficient subtree based C14N
* Algorithm C: The moderately efficient nodeset based C14N, which
does not expand out namespace nodes (the one mentioned in
exclusive C14n spec, that Thomas pointed out)
* Algorithm D: The extremely inefficient nodeset based C14N which
expands all namespace nodes. (the one mentioned in inclusive C14N
spec)
Algorithm A, B and C are available in JDK 1.6, and that is what I have
used to demonstrate the performance (with permission from Sean Mullan)
The JDK 1.6 tries to use the subtree based code if possible. To make it
use the subtree based algorithm, I just assign an ID to the subtree, and
then create a Reference to this ID. But to make it use the nodeset based
algorithm, I use the same reference to that ID, but then I add a Xpath
Filter transform with an expression 1=1. This expression always
evaluates to true, so this is exactly same as signing the subtree.
We will run these algorithms on these three xml files.
* *5k_few_nodes.xml*: This is a file with very few nodes. There is
just one very large text node
* *5k_many_nodes.xml*: This is a file with many nodes, each node is
very small
* *5k_many_nodes_namespaces.xml*: This is a file with many nodes, it
also has many namespace nodes
Here are the numbers on my machine
Algorithm A
(serialize)
Algorithm B
(subtree c14n)
Algorithm C
(nodeset c14n)
Algorithm D
(original)
5k_few_nodes.xml
3.0ms
4.0ms
6.7ms
5k_many_nodes.xml
4.1ms
4.3ms
21.5ms
5k_many_nodes_namespaces.xml
5.0ms
5.4ms
164ms
I need to dig up an implementation for Algorithm D.
Also I will check in these tests into a location in the CVS
Pratik
Received on Monday, 4 May 2009 20:34:31 UTC