[sword-devel] Interesting timings for verses / ms with different interfaces

Lynn Allan sword-devel@crosswire.org
Mon, 17 Nov 2003 09:58:36 -0700


I've been "fussing" with different interfaces to the rawtext and ztext
files.

"microDiatheke" uses canon.h and raw lseek's and reads of uncompressed
rawtext
93,306 total verses (entire ot & nt of  BBE, KJV, and WEB) in 0.48 sec =
194 verses retrieved per ms

***************************

"miniDiatheke" uses #DEFINE SUBSET_PLUGIN with modified versekey.
libswordvc6.lib is 58kb.
93,306 total verses (entire ot & nt of BBE, KJV, and WEB) in 0.44 sec = 212
uncompressed verses retrieved per ms

78,112 compressed verses (entire ot and/or nt of BWE, ISV, GODSWORD, LITV)
in 0.681 sec = 114 compressed verses retrieved per ms

171,418 verses (entire ot and/or nt of BBE, KJV, WEB, BWE, ISV, GODSWORD,
LITV) in 1.091 sec = 157 verses retrieved per ms

***************************

"sword-api" uses parsing, listkey, etc.  libswordvc6.lib is 2.8meg.
92,580 verses (entire ot of BBE, KJV, WEB, LITV) in 4.827 sec = 19.2 verses
retrieved per ms

47,422 verses (entire nt of BBE, KJV, WEB, BWE, ISV, LITV) in 2.573 sec =
18.4 verses retrieved per ms.

***************************
***************************

The "simplified" interfaces use
VerseKey vk(2, 10, 2, 8) rather than VerseKey("Eph 2:8") to avoid parsing.
They don't allow something like:
VerseKey("Malachi 3:4-Matthew 1:6 ; Eph 2:8-10");

They seem to be about 10x faster for retrieving individual verses. I'm going
to try to get some timings for fetching an entire chapter using the full
sword-api. Note that the resulting libswordvc6.lib can be about 1/20 the
size.

Above timings were with a 2200+ AMD, 512meg 2700 memory, and 120gb+8meg
cache IDE drive.