I decided to go the other way, discovered an example for WPF and Windows Forms. We compare the behavior of the two systems.
Take the two tasks that we need to see:
1) The move of the polygon while dragging the mouse cursor (Assess the relative speed of rendering mouse movements, as well as the amount of memory consumed).
2) Amount of memory consumed during the rotation of the polygon around its axis.
Input:
Intel Core i7 3.4 Ghz, 8 Gb RAM. Run all tests from Release.
In the initial state of memory consumption:
WPF - ~50 Mb
WinForms ~30 Mb
Run all tests will be in the demo application in the tree:
Editing Feature Layer -> Track and Edit Shape
All tests will be conducted on the critical component that is at a very rapid movement of the mouse on the screen.
Теst 1.1 (winforms + task 1):
The polygon did not lag behind the mouse movements precise, the amount of memory increases slightly (~50mb adding)
Теst 1.2 (wpf + task 1):
The polygon is behind the movement of the mouse (the problem of WPF).
The amount of memory is increased to about 200 megabytes.
Теst 2.1 (winforms + task 2):
Spinning around the axis of the polygon is absolutely behind the mouse, the amount of memory varies roughly as well as in motion (50 Mb).
Теst 2.2 (wpf + task 2):
Here there are significant problems. First, the spinning polygon rather lags behind the mouse cursor during the movement. Second, if the editing is (say) 10-20 objects, markedly inhibits the ground during rotation. But the most interesting is in the memory consumption. A simple constant spinning I was able to make the program instead of 70 Mb began to consume 800-900 megabytes RAM. When the motion stops, and we do not touch the mouse dropped to 400-600 after a while even decreasing. Then I made another interesting test. I drew five polygons (with the lines of the same) and all of them quickly began to rotate around the axis of the inside of your EditInteractiveOverlay. During the traffic program reached 1.2 Gb RAM consumption, and sometimes even fall to a bug in Draw function with an error of insufficient memory. The same situation probably can be done if you run the example in the car and turn the poor is only one landfill, since the memory is leaked rapidly (from 70 to 800-900 megabytes) during a simple spinning. We have also seen just moving / spinning polygon in pure WPF without ThinkGeo and noticed that the growth is almost no memory.
You may like to comment on the situation? why a WPF application is a wild growth of dynamic memory rendering card?