This is a migrated thread and some comments may be shown as answers.

RadMap performance in app with high memory usage

1 Answer 102 Views
Map
This is a migrated thread and some comments may be shown as answers.
Shrinand
Top achievements
Rank 1
Shrinand asked on 26 Mar 2015, 09:12 PM
Hi guys,

My application typically uses high amount of memory, up to 1GB in some intensive cases. My machine has 12GB memory so no problem. In intensive cases, RadMap fails to respond after panning/zooming a couple of times. When profiled, the bottleneck is in Telerik.Windows.Controls.Map.TileSource.CreateBitmap(). I tried to used caching but not much improvement. Any advice?

This is some code for mockup

<Window x:Class="RadMapPerf.MainWindow"
        Title="MainWindow" Height="600" Width="800">
    <Grid>
        <telerik:RadMap x:Name="RadMap" Center="38.8993487,-77.0145665" UseDefaultLayout="False" ZoomLevel="7">
            <telerik:RadMap.Provider>
                <telerik:OpenStreetMapProvider IsTileCachingEnabled="True"/>
            </telerik:RadMap.Provider>
        </telerik:RadMap>
    </Grid>
</Window>
public partial class MainWindow : Window
    {
        private readonly List<string> _memory = new List<string>();
 
        public MainWindow()
        {
            InitializeComponent();
 
            // fake memory usage
            for (var i = 0; i < 100000000; i++)
                _memory.Add("memory_usage");
                 
        }
    }

1 Answer, 1 is accepted

Sort by
0
Petar Mladenov
Telerik team
answered on 31 Mar 2015, 12:38 PM
Hello Shrinand,

You can try to increase the default Cache Size which is 10 * 1024 * 1024 bytes. A possible way to achieve this is to inherit from OpenStreetMapProvider like so:
public class CustomOpenStreetProvider : OpenStreetMapProvider
{
    public CustomOpenStreetProvider() : base()
    {
        if (this.MapSources.Count == 0)
            return;
 
        var tiledSource = this.MapSources.ToList()[0].Value as TiledMapSource;
        if (tiledSource != null)
        {
            tiledSource.IsTileCachingEnabled = true;
            tiledSource.SetTileCacheSize(100 * 1024 * 1024);
        }
    }
}

Please let us know if this has a positive effect in your environment.

Regards,
Petar Mladenov
Telerik
 

See What's Next in App Development. Register for TelerikNEXT.

 
Tags
Map
Asked by
Shrinand
Top achievements
Rank 1
Answers by
Petar Mladenov
Telerik team
Share this question
or