We are developing a product which has the implicit requirement that a single
hotsync take no longer than five minutes to complete.
Currently, with a portion of our dataset consisting of 11,600 records, it
takes 4 minutes 20 seconds to retrieve the first four bytes and the record
id from each record in this dataset. We have a sophisticated fully
server-side system for determining what records have changed, and do not
need to examine the records on the handheld to determine this, but must
obtain the record-id corresponding to a particular identifying DWord. Since
the initial read of these DWords takes 4 minutes, we are being pushed over
our limit almost before we begin. This is deeply puzzling, since, having
examined what information is returned in the header, we have determined that
the handheld should only need to transfer 13 bytes per record; four bytes
from the record itself (which we are limiting using totalbytes on a >= 2.1
API), and the header information (using SyncReadRecByIndex). For 11,600
records this is 150,800 bytes. At 57,600 this should take around 20.9
seconds. Instead, it takes 260 seconds. Thus this transfer is 91% overhead!
Why is the overhead so great? We are trying to get setup for 115 kbps
transfer, but don't see that this will provide much benefit to a transfer
that has this kind of overhead.
Howard C. Shaw III
Programmer
Tyrol Data Systems