5 | | The solution would be to have an in-memory cache of resource content, such that subsequent calls to GetResourceContent() on the same resource id returns a MgByteReader from a cached copy of the resource content. Subsequently, calls to SetResource() will flush existing entries out and update the cached entry. |
| 5 | The other explanation can be found by running an mg-desktop application through Process Monitor, which shows the main culprits being: |
| 6 | |
| 7 | * Excessive ReadFile calls on CS-Map Dictionaries |
| 8 | * Excessive ReadFile/QueryStandardInformationFile/QueryDirectory calls on Access.log |
| 9 | |
| 10 | Part of the solution would be to have an in-memory cache of resource content, such that subsequent calls to GetResourceContent() on the same resource id returns a MgByteReader from a cached copy of the resource content. Subsequently, calls to SetResource() will flush existing entries out and update the cached entry. |
| 11 | |
| 12 | We also need to review the use of MgCoordinateSystem* classes in mg-desktop and the ported Log Manager code to see where we're doing things different from MapGuide Server (that does not have these high I/O read numbers) |