<div dir="ltr"><div>I've pushed a branch to origin called 5.5-xml-perf that I intend to push to</div><div>master in a few days.</div><div><br></div><div>The branch is an result of reviewing the pbd/xml++ code and noticing a few</div><div>things that could be improved and realized I should probably write a test case</div><div>so I didn't break anything. The result is an increase in the performance for</div><div>parts of the pbd/xml++.h API.</div><div><br></div><div>The test case in pbd/tests generates three xml documents of different sizes</div><div>that are roughly Session file like to measure the performance timing</div><div>differences as a result of the changes. I did it this way as I didn't think</div><div>adding a 10-20MB Session file to the repository was a good idea and it allows</div><div>measurement of the sort of allocation patterns we have in Ardour when</div><div>constructing an XML document.</div><div><br></div><div>The results of running the test case in the branch vs master with optimized</div><div>builds yields:</div><div><br></div><div>40% reduction in "Create" time(50% in debug build)</div><div>Write time is about the same</div><div>20% reduction in "Read" time(35% in debug build)</div><div><br></div><div>There is also a reduction in memory usage as the map in XMLNode that was used</div><div>for property lookup has been removed as it wasn't helping performance.</div><div><br></div><div>Testing with a real Session yields less impressive improvements as there is a</div><div>lot of other stuff going on, but with my test Session(7.8MB) it improves load</div><div>time by ~13% and save time by ~5%. Once you factor in all the stuff happening</div><div>in the GUI when loading a Session it probably isn't going to be noticable.</div><div><br></div><div>Any feedback on the branch/testing is welcome but I don't expect there to be</div><div>any issues.</div><div><br></div><div>Tim</div></div>