Opened 14 years ago

Closed 14 years ago

#1538 closed enhancement (fixed)

Speed up Coordinate System Dictionary lookup when reading all CS definitions at once

Reported by: baertelchen Owned by: baertelchen
Priority: low Milestone: 2.3
Component: General Version: 2.1.0
Severity: minor Keywords: Coordinate System API
Cc: External ID:

Description

When reading all available coordinate system definitions from the dictionary (in this case, from coordsys.csd), the current implementation does (way too) many file look ups via CsMap. For each(!) CS definition to be read (out of thousands), the implementation will first read the CS' name (1), this name is later taken to read the CS' definition (2). When creating the MgCoordinateSystem instance, the CS' datum is taken and the MgCsDatum instance is created(3). While creating the MgCsDatum instance, the MgEllipsoid instance is also created (4).

The numbers indicate the file accesses via CsMap. This includes a global in-process lock, the file access itself inside CsMap (which does a divide-and-conquer-like search within the file) and the construction of the object.

This ticket is to fix the implementation of [MgCoordinateSystemEnum::Next(UINT32 ulCount)] in [CoordSysEnum::Next(UINT32 ulCount)] as returned by the [CoordSysDictionary] class.

That is, when an API client is about to read ALL available systems (as indicated by the UINT32 ulCount parameter), the lookup has to be much faster.

Change History (2)

comment:1 by baertelchen, 14 years ago

Summary: Speed up Coordinate System Dictionary lookup when reading all CS definitions at oneSpeed up Coordinate System Dictionary lookup when reading all CS definitions at once

comment:2 by baertelchen, 14 years ago

Resolution: fixed
Status: newclosed

Has been fixed in revision 5427 (main submission) and 5432 (additional fix to address problem with lowercase / uppercased code strings) (December, 1st 2010).

Note: See TracTickets for help on using tickets.