Now where will this path lead me?
Two posts ago, I thought to convert to using XML as my internal data structure, since it’s equivalent to GEDCOM and I had an XML library available. The library wasn’t bad, but when I looked closer at it, I saw it was effectively using a simple tree structure.
So then I thought to load the GEDCOM directly into a simple tree structure. I found a nice little InMemoryTree routine from a post on Experts-Exchange.
I implemented that and started customizing. It was a bit slow.
At this point, I decided to check out various Profilers and use them to help me speed up the code. I downloaded AQTime and ProDelphi.
With AQTime’s line-by-line timings, I decided it was worthwhile to see how much I could speed up the parsing of the input line.
I started pulling more and more extraneous code out of my input, parsing and data loading routines and …
Behold can now read a 25 MB GEDCOM file with 95000 names and load its GEDCOM-like internal database in 1.19 seconds. A 48 MB GEDCOM loads in 2.25 seconds. This is about 20 times faster than the current alpha version of Behold! It also gives approximately the same speed as GenViewer, which has the fastest GEDCOM loader I know of.
So this is a keeper. It evolved by accident. I originally thought XML would be an excellent way I could export the GEDCOM again. It evolved into a complete rewrite of Behold’s internals that will make it much zippier.
This is an excellent time to make these major changes. The next release will be the beta, so I will be able to get everyone’s help to test that all is okay and the reinstalled functionality is all still there.
Stay tuned. Much more TBA along these lines.