[Mapserver-dev] Optimizing msAddLine()
Administrator
jnovak at novacell.com
Tue Jan 7 00:56:17 EST 2003
It may be worthwhile to consider using David Lea's malloc/free
replacement to pick up some performance gains in the memory manager, at
least for the windows environment.
If the build for other platforms use libg++, then they're already using
this memory manager. See http://gee.cs.oswego.edu/dl/html/malloc.html
And
http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf
For some interesting discussion on this topic.
John Novak
Novacell Technologies
-----Original Message-----
From: Daniel Morissette [mailto:morissette at dmsolutions.ca]
Sent: Monday, January 06, 2003 2:51 PM
To: mapserver-dev at lists.gis.umn.edu
Subject: Re: [Mapserver-dev] Optimizing msAddLine()
Steve Lime wrote:
>
> Thanks David, lemme (and others?) look through the code and test it a
> bit. Certainly looks promising though. Wonder how much affect it has
> in web use...
>
I think the basic idea is great (better than reallocating one item at a
time), but I'm worried a bit by the overhead in memory usage involved in
general use of the current solution, especially for things like the
labelcache that stores shapes for each label. I could be wrong but I
would think that the majority of those shapes in the labelcache will
have only one point (i.e. one lineObj) ... so with the current
implementation we are wasting 63*8=504 bytes per label
(sizeof(pointObj)=8 on a 32 bits system). A street level map could
easily have hundreds of labels or more, so a relatively simple street
map with 200 labels in the cache would be wasting about 100k... ...
well, now that I do the maths I guess 100k per map draw in average is
not that bad.
Anyway, what I wanted to propose is to start with a smaller buffer and
double the buffer size everytime we realloc, e.g. start with a buffer of
8 lineObj, then realloc to 16, 32, 64, 128, ... ... so assuming that
most shapes (in the Universe ;) have in average less than 8 rings we
would do only 1 allocation and not waste too much memory, and for shapes
with hundreds of rings then we would not be doing too many reallocations
(about the same number as with a fixed increment of 64).
Anyway, just a thought.
Daniel
--
------------------------------------------------------------
Daniel Morissette morissette at dmsolutions.ca
DM Solutions Group http://www.dmsolutions.ca/
------------------------------------------------------------
_______________________________________________
Mapserver-dev mailing list
Mapserver-dev at lists.gis.umn.edu
http://lists.gis.umn.edu/mailman/listinfo/mapserver-dev
More information about the mapserver-dev
mailing list