Tuesday, January 10, 2012

ezGED's file size limits

I have anticipated writing this post since the first day ezGED Viewer was released. Eventually someone will try a 20 megabyte GEDCOM file and be disappointed with the result. That day has now arrived.

This has been a known limitation of the 1.0 version of the software. The maximum GEDCOM file size is essentially bound by the amount of memory available to store the file's in-memory representation. Each android application gets a "heap" of memory to work with. A lot of this memory will already be used for GUI resources, what remains can be used for data storage. Typical android 2.x smartphones are allocated 24 megabytes of application heap, while 3.x tablets are allocated 48 megabytes.

To measure ezGED's capacity limits, the app's fan value has been determined when running on a smartphone and a tablet. The fan value is a measure of the number of ancestral generations an application can handle. It is a rough measure of the capability of an application and it can be easily determined using a standard set of GEDCOM files created by Tamura Jones' GEDFAN test tool version

Here are the test results for ezGED v1.0.1, using a LG Optimus V smartphone and Acer Iconia Tab A100 tablet:
FAN#IndividualsFileNameFileSizeSmartphone 1.6-2.3 (24mb heap)Tablet 3.x (48mb heap)
1416,383FAN14.GED2,913,929Force close at 67%OK
1532,767FAN15.GED6,073,397Force close at 31%Force close at 58%
1665,535FAN16.GED12,416,621Force close at 15%Force close at 28%

Fan values range from 1 to 24, but the larger values are not displayed because they are currently outside the range that ezGED can accept. As you see in the table, the smartphone can not load FAN14.GED. The parser progress bar will get to 67% completion and then the app will close. The tablet does a little better, since it can load FAN14.GED. However, when the tablet loads FAN15.GED, it parses 58% of the file when the app closes. We might peg ezGED's fan values at 13 for smartphone and 14 for tablet, but those are a tad optimistic since performance of the app drops off when pushed to the limit. For comparison, here is a link to fan values for some MS-Windows desktop applications: Some GEDCOM Fan Values.

The "FAN" files are quite simple consisting of individuals, families, and lineage-links for the most part. There are no notes, sources, or events. Real GEDCOM files contain a richer variety of content, so for an equivalent number of individuals, the file size would be larger.

ezGED's file size limitation is clearly an area that needs some rework. There are two things we hope to improve in future versions:
  • Provide an appropriate message when the application is going to run out of memory and gracefully terminate or abort the file load.
  • Improve the fan number by using SQLite storage rather than keeping everything in memory.


Post a Comment

Popular Posts


Total Pageviews

Follow by Email