How to improve Drive Realtime API load time?
We are having some serious load time issues. I had a Google+ Discussion a
few months ago with Cheryl Simon. We're now in beta and our users are
complaining about the load time.
We have a small test document (272kb transferred) that we've tested across
devices. The following load times are just for calling load, while on fast
wifi:
Desktop i7 machine with Chrome 30.0.1549: ~800ms
MacBook Air with Chrome 29.0.1547: ~1900ms
MacBook Air with Safari 6.0.5: ~8000ms
iPhone 5 Safari: ~8000ms
We can deal with load time of a couple of seconds, but 8 seconds is a lot.
The biggest blocking issue is that at the end of the load, the realtime
API totally freezes everything while it's processing. That lasts for a few
seconds on the phone which makes it completely unusable.
Of course, this scales with the size of the document. This is just a small
test document, but our users have larger documents on the scale of a few
megabytes.
On my machine, total load time for the realtime playground is about
4000ms, so it doesn't seem like this is a problem isolated to our usage.
But are we doing something wrong that could solve this problem? Or will
there be an upcoming fix?
Thank you. We really like this API and hope this issue can be worked out.
Screenshots:
MacBook Air Chrome
MacBook Air Safari
iPhone Safari
Details of our data structure:
Remote Size: 272.30 kB
Remote String Size: 39.99 kB
Collaborative Remote Item Counts:
Map : 834
List : 246
EditableString : 830
Map Property Counts:
:^: 144 // Date
:ad: 9 // Boolean
:ai: 43 // CollaborativeList of strings
:c: 824 // Date
:d: 9 // Date
:f: 16 // Integer Array
:i: 203 // CollaborativeList of strings
:t: 824 // EditableString
:u: 400 // Integer
:v: 463 // Integer
-------
Total Properties: 3575
Average Properties per Map: ~4.29
Our data is setup as a tree of Maps, each of which contains some of the
above properties. The children are referenced through collaborative lists
of IDs. There is an additional lookup table which is a CollaborativeMap
that contains an entry for each Map in the tree. This is where all the
CollaborativeMaps are parented.
Also see the Google+ post linked at the top for more screenshots and
information.
No comments:
Post a Comment