Opened 15 years ago

Last modified 13 years ago

#1069 reopened enhancement

Improve MgMap creation performance

Reported by: christinebao Owned by: traianstanev
Priority: medium Milestone: 2.2
Component: Server Version: 2.0.2
Severity: major Keywords:
Cc: External ID:

Description

Currently MgMap is created on Web Extension side, and for each layer of this map it sends a request to get the resource content. This causes a lot of requests send to server again and again. To improve performance MgMap should get the layers in a single request, and use the batch processing result to create layer models. The more layers a map has, the better performance improvement is achieved.

Please see RFC http://trac.osgeo.org/mapguide/wiki/MapGuideRfc73 for detail.

Attachments (3)

GetResourceContentsAPI.patch (20.4 KB ) - added by christinebao 15 years ago.
ImprovePerformance.patch (19.3 KB ) - added by christinebao 15 years ago.
remove-loop.patch (5.7 KB ) - added by hubu 13 years ago.
romove some un-necessary loop in server.

Download all attachments as: .zip

Change History (9)

by christinebao, 15 years ago

comment:2 by tomfukushima, 15 years ago

Owner: changed from Tom Fukushima to traianstanev

by christinebao, 15 years ago

Attachment: ImprovePerformance.patch added

comment:3 by christinebao, 15 years ago

Attach patch http://trac.osgeo.org/mapguide/attachment/ticket/1069/ImprovePerformance.patch.[[BR]]

This patch improves performance by using the new API GetResourceContents().
LayerBase adds a constructor without initializing resource content, and the resource content is set and cached after getting them in a single request. Three use cases are affected:

  1. Open a tiled map with base layers.
  2. Open a normal map without base layers.
  3. Print map.

comment:4 by traianstanev, 15 years ago

Resolution: fixed
Status: newclosed
Type: defectenhancement

comment:5 by brucedechant, 14 years ago

Submitted to sandbox/adsk/2.1 r4368

comment:6 by hubu, 13 years ago

Resolution: fixed
Status: closedreopened

I reopen this ticket because I found the revision #4191 can't improve the performance, but decline the server performance.The reason is:

The new server API GetResourceContents() is used to reduce the request between web and server. However in server internal, we shouldn't invoke this API to get resource contens. There are overhead to prepare the layerIds and to get the these contents. You can see ImprovePerformance.patch, in MappingUtil.cpp/LegendUtil.cpp, there are some for statements are introduced. This will decline the performance.

So we should revert the revision #4191. I attached an patch for you review.

by hubu, 13 years ago

Attachment: remove-loop.patch added

romove some un-necessary loop in server.

Note: See TracTickets for help on using tickets.