ThinkGeo.com    |     Documentation    |     Premium Support

Performance of Demo sqlite DB

Hello,



I’ve been playing around with the “OSM World Map Kit Explorer” and noticed that panning can be really slow (up to 5 seconds), even when I pan back to an area that was already rendered before.  This is very noticeable when all the small streets of Vegas are visible.



Is there anyway to configure the SDK to pre-render, or pre-fetch some data from the DB to reduce the load time?



I’m running a Core i7 with 16 GB or RAM

Hi Sanjeev,



Thanks for evaluating our products!

I did a quick test with a sample and seems the performance is good, I took a test video and would you please have a look at it? screencast.com/t/H6qptpDfHf

Btw, my machine has the same configuration as yours and I also attached the test sample here.



In order to improve the performance, enabling the cache system is the best solution, you can see the details from the video also. Here is the code for caching and please note that the cache only works for multi Tile:


LayerOverlay overlay = new LayerOverlay();
overlay.TileType = TileType.MultipleTile;
overlay.TileCache = new FileBitmapTileCache("…/…/Cache",“Vegas”);

For the cache, We also provide a cache tool to generate the whole tiles images where you want to cache, please refer to thinkgeo.com/forums/MapSuite/tabid/143/aft/10446/Default.aspx.



Please let us know if any questions and hope you’ll have a good journey on map suite products.

Thanks,

Troy

002_001_DisplayASimpleMapForWPF.zip (11.3 KB)

Thanks.  That helped a lot! 
  
 I find now, sometimes when I zoom or pan the map disappears for up to a minute.  Then once it re-draws, everything works beautifully.  This doesn’t happen too often…  Is there something Im doing wrong?  Here is my code: 
  
 
var cache = new FileBitmapTileCache("…/Cache", “Vegas”);
            cache.TileAccessMode = TileAccessMode.ReadAdd;

            _wpfMap.MapUnit = GeographyUnit.Meter;

            LayerOverlay overlay = new LayerOverlay();
            overlay.TileType = TileType.MultipleTile;
            overlay.TileCache = cache;
            _wpfMap.Overlays.Add(overlay);

            OsmWorldMapKitLayer osmWorldMapKitLayer = new OsmWorldMapKitLayer(@“Data Source=C:\temp\LasVegas3857.sqlite;Version=3;Read Only=True;”, OsmWorldMapKitDatabaseType.Sqlite);
            overlay.Layers.Add(osmWorldMapKitLayer);

            osmWorldMapKitLayer.Open();
            _wpfMap.CurrentExtent = RectangleShape.ScaleDown(osmWorldMapKitLayer.Layers[“osm_road_linestring”].GetBoundingBox(), 50).GetBoundingBox();
            osmWorldMapKitLayer.Close();

            _wpfMap.Refresh();

 


Hi Sanjeev,



The code looks fine and the re-draw works perfect is because of the cache. But you mentioned the zoom or pan will take a bout one minute, this should not be an expected behavior. Would you please comment out the enabling cache line to see if the bad performance always happen?



Like you can see from my test video, the code is almost the same as yours and the performance looks good. Would you please take the latest dlls package and try again? 



Thanks,

Troy


Thanks for the reply




I don’t think I mentioned this is my last post, but what really helped was switching from Single to Multi tile mode.  Overall multitile mode is much smoother - it really impressed my boss :)




I tried updating the latest version (build 170) and turning off caching, but that did not help.  Here is exactly what I saw



* Launched my app
* Took 50 seconds for first time to appear, then 10 seconds for second tile, then rest appeared quickly after that
* Double clicked several times near center of window
* Map disappeared
* Map started redrawning after about 15 seconds, and was quick to redraw.


I see similar behavior when I run the app you attached to your first post.




I’m running .NET 4.5 and Windows 8.1 (fully updated), could that have anything to do with it?  Could it be something with the sqlite dlls?  I’m using the ones I downloaded with the ThinkGeo package

Hi Sanjeev,



I tested it again with a virtual machine, but the performance looks still fine, please check the video.screencast.com/t/pFQ5vXLgKy89

But I found an issue in our daily build packages on the “SQLiteExtension.dll” file(29KB), which is smaller than the one (31KB) in installationPath\Map Suite World Map Kit SDK\Current Version\Managed Assemblies. If the dll in your end is using the 29kb one, would you please try the bigger one?



Please let us know if any questions.



Thanks,

Troy



Sanjeev, 
  
 We do have some performance issues in 8.0.0.160 when working under MultipleTile mode. The issue has been fixed in development branch MapSuiteCore.dll and WpfDesktopEdition.dll 8.0.0.176, please get the latest assemblies and have another try.  
  
 Ben

Hi Sanjeev,



We received another issue from you on the white tile issue, here is a solution for it, try the below codes should works:



            overlay.IsBase = true;
            overlay.TransitionEffect = TransitionEffect.Stretch;
            overlay.TileCache = new FileBitmapTileCache("…/…/Cache", "Vegas");



Please let us know if you have any questions.

Thanks,

Troy

I tried setting IsBase to true, but that did not fix the problem.  I’m running production build 177.  I found develop was really slow and would make the application much less responsive.

Hi Sanjeev,



I want to confirm the issues: now you got two issues, one is the performance issue in development package and the other one is the white tile in production packages. Is that correct?



For the performance issue, I tried again in difference machines but still without lucky. For the white tile issue, we need to enable the three properties together especially the TileCache and then have a try? As once I enable the cache, the white tiles are gone during the zoom in/out.



Please let us know more details if any questions and I think it is better if you can take a video to show the issues.

Thanks,

Troy

I have been able to get the white tile problem resolved.  I didn’t have caching turned on.  When I did, the white tile problem went away, but my map didn’t always render correctly.  I have attached some screen shots. 



To reproduce the performance problem, have you tried using a machine that has a non-default DPI setting?

006_1.jpg (33.9 KB)
004_2.jpg (45.4 KB)
003_3.jpg (43 KB)

Hi Sanjeev,



I tried the version again and can recreate the performance issue.

But I found the issue is happened from WpfEdition dll package rather than WorldMapKit dll. I encountered the performance issue when the WpfEdition dll is the production version(8.0.0.177), but the issue doesn’t happen in development version(8.0.177.0), and the cache is also good in development version. Would you please confirm it by using Wpf development version?



Thanks,

Troy

I have tried the latest development version and the problem is gone.  It works much better.  Do you know when the development branch will be merged into production?

Hi Sanjeev, 
  
 That’s great. In general, we will merge the development branch to the release at the annual release(middle of year). For this enhancement, I think I need to make sure it pass the tough test and then we can apply it to release, at the meantime, as we are freezing the code for a new product center release, I think it won’t be done in a short time. But I also think you can feel free to use the development branch. 
  
 Thanks, 
 Troy

Great!  Thanks for your help!

You are welcome! 
  
 Thanks, 
 Troy