Rendering performance in MapWinGIS 5.2

I brought up the topic (Performance MapWinGIS 5.2) of performance degradation in MapWinGIS 5.2.

In this thread, Mathijs.Dumon answered me that compared to version 5.1 there have been significant changes with rendering (er-category scale dependency, per-feature point rotation using expressions, relatively positioned line segment markers, label generation for dynamic layers)

The drop in productivity at that time reached several times (200-300%)
After that, a fix was released and the work was restored as before, but this is only visually by eye.

Now, with the constant use of version 5.2, I noticed that the difference in performance between 5.1 and 5.2 is about 30-40%. And this is very unpleasant … very noticeable when scrolling with the mouse wheel with a large number of objects and layers. On one layer and with a small number of rendered objects, without styles, it probably won’t be striking. I have researched this question quite well. At the moment, version 5.1 is the best in terms of rendering speed. However, I really want to use version 5.2. I use MapWinGIS in conjunction with PostgreSQL 11 and new versions of PostgreSQL 12, 13 are not available to me with version 5.1. Only 5.2 can work with these versions of SQL Server. And of course I would like the performance to be higher or at least not worse in the new versions of MapWinGIS.

I understand that the product is created by enthusiasts and perhaps a 30-40% loss in productivity will be a very minor issue to devote time to.
But still I will ask the question - is there anything else you can do? To try and match the performance of 5.1?

Sorry for my english … this is google translate. Therefore, some turns of speech may not be entirely clear.

Hello Valeriy.

I sympathize with you, and this is a difficult topic. I expect this product to be used by professionals, and to be a viable tool. That’s why I got involved in it’s development. Additionally, what I’m going to say is my viewpoint, and it may differ from that of others involved in the project.

Over the course of time, I have maintained 3 different versions of the OCX - the main development branch, and 2 custom versions for specific clients of mine - what you might call proprietary versions.

The reason I have done this is that certain customers have requested or required certain features, but not all of these features were appropriate to be added to the public development branch. If I was fixing a bug, or adding common features, for example, that were supported by ESRI MapObjects, or other mapping products, then I have included that code in the public branch. On the other hand, if I was adding a feature that was very specific to a customers requirements, or was not a use-case that was fitting to the general public, I have added that code, and supported it, only in their private copy of the source code, not in the public branch.

When updates or fixes are made by others to the public branch, I will merge those back into my custom branches, so that they can benefit from all new features and fixes, while still maintaining their private and proprietary functionality. I hope this is making sense.

Now regarding the current state of MapWinGIS, many of the features that were added in 5.2 were, in my opinion, specific to a customers need, and perhaps not applicable to the general public. No one was requesting all of the features that were added, and in fact they were added for one specific end-user. Because of their complexity and overhead (which you are observing), I believe that they should not have been added to the development branch, but instead maintained in a private branch for that end-user. And in fact, because of this, I have not merged most of these changes into my customer’s branches, so that their performance does not suffer.

I don’t know what the solution is to this problem, and I don’t really know if anyone even agrees with me. I don’t want to cause division. But if there is enough concern, then we should consider options, such as controlling those features using Global Settings, so that they can be turned on only for specific users, OR by creating a branch or fork that excludes those options. Neither of these are trivial, but they can be done.

I welcome any feedback related to my comments.

Kind Regards,

Hello Jerry.

Thanks for a very detailed answer.

Yes, I initially understood that this would be a very difficult question.
It may not even be implemented, especially since this is not an obvious error or problem.
Some people may even say that I’m being picky… and so it will go…:slight_smile: 30-40% of performance is nonsense.
Maybe I really love it too much for everything to be perfect.

It would certainly not be bad if such functionality could be disabled directly in the settings, and not lead additional branches.
Although of course it would be possible to make versions like MapWinGIS and MapWinGIS Pro, or something similar.:slight_smile:

However, in general, I must admit that this is one of the best GIS products for developers, freely distributed, that I have met.
And no matter how you look at it, the support in general is not even very bad. No matter how you write here, you are Jerry, you are always in touch here and you answer very quickly.
I have been observing your exceptional activity for 2-3 years now. Thank you for your work and for spending your time with us… (MapWinGIS consumers)

With respect, Valery Sannikov.

I hasten to inform you that I probably misled about the performance differences in the versions. In the officially compiled version, the Redraw Time display did not work and I could not pinpoint the difference. And I did independent builds with the latest changes in Debug mode. Without even paying attention to it. Hence there was a loss of performance. Due to the fact that new changes have been made recently, I decided to rebuild MapWinGIS, but now I have set the Release mode and after taking new measurements, I was very surprised that the performance remains at a good level, as in version 5.1.1. So please excuse me for my oversight in the assessment.

No problem. I’m glad to hear it. Thank you for the update.


I also found this problem, I used version 5.2.4, the speed is very slow, seriously affect the operation.
Map operation is very slow when disk cache files are too large - MapWinGIS - MapWindow GIS

Very slow compared to what? In this topic, I compared the same situations in versions 5.1.1 and 5.2.4. I think this is a completely different situation. Moreover, after my last comparisons, which I described above, I did not see a difference in performance. In my case, the difference turned out to be because I compiled the latest version of MapWinGIS in debug mode

My last version is 4.8,Now 5.2.4. It feels slow and takes 2 to 3 seconds to add a point,It’s awful to use.

The problem is not entirely clear. If it means that a large file with information… 1 Gb, then I don’t know… In my case, the data is loaded from the SQL server into memory. And there I compare the rendering of the map. So, that’s not what I was talking about. Well, the fact that the rendering time increases as the size of the map window increases, so it’s natural. It cannot be the same, the load increases on the processor when the area for rendering increases. If there are just a lot of layers and data on them, then as Jerry said above, you need to use the MinVisibleScale of the features, and the MinVisibleScale of the labels. And everything works fast enough. Unless, of course, the hardware on your computer is not completely old.