cppfw/svgdom

Investigate performance improvement possibilities

Closed this issue · 6 comments

callgrind shows that a lot of dynamic_casts are used inside of the istream, perhaps it is istringstream investigate if it is possible to avoid using it.

current performance test numbers on Ryzen3950x:

SVG loaded in 0.009 sec.
SVG parsed in 2.566 sec.
SVG loaded in 2.587 sec.
SVG searched in 0.013 sec.
SVG parsed in 1.349 sec.
SVG parsed in 1.347 sec.
SVG parsed in 1.338 sec.
SVG parsed in 1.34 sec.

after 7bd5f08 the numbers are as follows:

SVG loaded in 0.01 sec.
SVG parsed in 1.391 sec.
SVG loaded in 1.404 sec.
SVG searched in 0.013 sec.
SVG parsed in 0.998 sec.
SVG parsed in 0.982 sec.
SVG parsed in 0.977 sec.
SVG parsed in 0.979 sec.

after 5976281 the numbers are:

SVG loaded in 0.01 sec.
SVG loaded in 0.548 sec.
SVG parsed in 0.545 sec.
SVG searched in 0.014 sec.
SVG parsed in 0.522 sec.
SVG parsed in 0.501 sec.
SVG parsed in 0.523 sec.
SVG parsed in 0.501 sec.

numbers after 2bc88e9 :

SVG loaded in 0.01 sec.
SVG parsed in 0.525 sec.
SVG loaded in 0.538 sec.
SVG searched in 0.013 sec.
SVG parsed in 0.511 sec.
SVG parsed in 0.494 sec.
SVG parsed in 0.492 sec.
SVG parsed in 0.49 sec.

numbers after 29853ea :

SVG loaded in 0.011 sec.
SVG loaded in 0.279 sec.
SVG parsed in 0.275 sec.
SVG searched in 0.016 sec.
SVG parsed in 0.256 sec.
SVG parsed in 0.242 sec.
SVG parsed in 0.24 sec.
SVG parsed in 0.241 sec.

numbers after edb796e :

SVG loaded in 0.01 sec.
SVG parsed in 0.206 sec.
SVG loaded in 0.217 sec.
SVG searched in 0.014 sec.
SVG parsed in 0.192 sec.
SVG parsed in 0.187 sec.
SVG parsed in 0.181 sec.
SVG parsed in 0.183 sec.