[mapguide-internals] RFC110 Profiling API enhancement

Arthur Liu arthur.liu at autodesk.com
Fri Apr 22 02:36:32 EDT 2011


Hi all,

There's an RFC110(http://trac.osgeo.org/mapguide/wiki/MapGuideRfc110)  about providing some profiling APIs to help identify MapGuide performance bottlenecks.

Before making this RFC be reviewed formally, I would like to know you experts' ideas about following questions:


1.      Which of the following implementation is better?

a.      Solution 1:

Copy the implementation of profiling related APIs to MgServerProfilingService and add profiling code into the copied version.

For example, to profile the map rendering process, we need to copy the implementation of RenderMap in MgServerRenderingService(and all other MG server APIs being invoked in RenderMap) to MgServerProfilingService. The advantage and disadvantage of this implementation is obvious: less influence on the original implementation but heavy maintenance to do in the future.



b.      Solution 2:

Inject the profiling code into the original functions being profiled directly, which means MgServerServices should be extended to accept a ProfileResult and the implementation of some APIs will updated to support profiling.

For example, to support profiling RenderMap, all the MgServerServices in the RenderMap workflow will be affected - MgServerRenderingService, MgServerResourceService, MgServerFeatureService, MgServerDescribeSchema, MgServerSelectFeatures, etc.  Some new internal interface like Get/SetProfileResult should be added to these MgServerServices.


For both solutions, how many code should be copied or updated will be decided by how detailed the information would be gathered.



2.      Is it a good idea that we take the advantage of MdfModel and MdfParser to store the ProfileResult object model and do the serialization?


Thanks,
Arthur


More information about the mapguide-internals mailing list