One of the things I had on my ToDo list before the beta release was to add connecting lines between the people on the Everything Report. I’ve wanted this since my initial concepts of Behold and I had dotted lines connecting people with their spouses and children on my prototype reports over 10 years ago.
But then I took a step back and realized that the connecting lines are already there. They are in the TreeView. The gears started turning, and the Aha moment came. What I need to do is combine the TreeView with the Everything Report! After I decided on that, then each thought led to another even greater thought …
If I switch to the Virtual Treeview package, then each “node” of the tree can be loaded into memory as needed. The whole Everything Report need not be generated and loaded in advance. Zowweee! That could reduce memory requirements and increase program speed by a factor of 5!
But then I can even go a step further and not load the GEDCOM data into memory. I can just index what I need from it and leave the data on disk using a technique called Memory Mapping. Then I fetch the data only as I need it. This could result in a further four-fold increase.
These two changes would result in a full 20 times improvement to Behold. That’s over and above the 6 times improvement I added in the current version. What that would mean is that Behold could probably process a 512 MB GEDCOM on a computer with 1 GB RAM. We’re talking about a million people here. I’m thinking of Behold loading a million people and bringing up the display of the Everything Report in less than 30 seconds.
The goal is not to be able to load one GEDCOM with a million people. There truly are not many of them. But I’d love to see Behold able to load 200 GEDCOMs each with 5,000 people. This would be something a Genealogical society could use to search or compare information of all their members. It would be an amazing use for Behold.
Until a few days ago, I thought it would be quite a number of years, before I’d be able to squeeze such performance into Behold. But the world has now opened up.
I’ve updated my Behold Future Plans Page to put me on that path. I will have to upgrade my version of Delphi before I do Virtual Treeview, so that is planned for version 1.1. The GEDCOM memory mapping will come in version 1.2. I haven’t even got the beta and version 1.0 out yet, and we’re talking about a year from now (minimum) before it’s all done, but it’s going to be fun to get there!