Thanks all for the fast and informed responses.
Consider this request closed. But I am looking forward to support for WebGL and Canvas in WebWorkers :)
A bit of background info, to explain "slow":
- Map and globe applications, like Google Maps, have more-or-less standardized on 256x256 pixel image tiles
- A low-resolution screen is 1024x768 pixels
- This requires 5x4 = 20 image tiles (5x4 rather than 4x3 because 4x3 only applies if your screen is perfectly aligned on tile boundaries)
- So, when the user clicks zoom, you need to upload 20 textures
- If it takes 1ms second per texture (and the Chrome developers have witnessed 2-5ms per texture on mobile) then you completely blow your frame budget
Right now, I'm getting better performance from using Canvas 2D than I'm getting from WebGL. This is annoying, because WebGL is lower level and should be able to do better. Texture uploads are a key source of jank, even though we limit texture uploads to one per second. Try the following demos:
WebGL of course offers a lot more, but it would be nice to at least match Canvas 2D performance :)
Thanks again - will wait for WebGL support in WebWorkers, because this is certainly a better long solution in the long term.