mobile-sdk
mobile-sdk copied to clipboard
way to debug slow style rendering
I ported the osm style to Carto Mobile SDK. Globally it is working just fine. everything is rendering correctly. However that style is slow to render. I can clealry see a difference with other (simpler) styles. osm.zip
Now there is 2 parts to that issues:
- get ways to see what is slow. In the log sometimes i can see "FetchTask: Tile requires 20 draw calls". What is causing 20 draws? I would guess it is the
::
used in the style to draw road contours, bridges, tunnels .... You confirm? Would be good to have a debug way to see that more precisely. - ways of improvement. Like on the theme side and on the sdk side.
I will try to get a closer look at the style but this may take a while. Normally each active layer (a layer that has at least 1 feature) in a tile needs a separate drawcall. This includes actual layers and 'virtual' layers created using '::'.
Though the SDK warns when using 20 drawcalls or more, this should be quite ok, if the layers are lightweight and there is not too much geometry. Usually the issue is that tiles for dense city areas are really large when decompressed and can take several megabytes of memory. And mapview contains normally 4-9 tiles at once. Mobile devices, especially the cheaper ones, have limited memory bandwidth and there is a lot of data to push for each rendered frame.
Ok well I only see the issue with that style so I guess it does not come from an issue with tiles size on memory. I am currently trying to simplify that style a lot to see if it fixes things.
@mtehver Thanks for that explanation. So, if we had the same X features, would it be better to have multiple active layers (e.g., 10) with X/10 features each? Or just one active layer with all X features?
(asking here, since it seemed relevant to the topic of slow rendering)
@lasyakoechlin It really depends on the number of features/layers. If there are less than 20 layers, then I think it makes no sense in merging layers.