[geos-devel] JTS/GEOS performance

strk at refractions.net strk at refractions.net
Wed Feb 2 13:27:09 EST 2005

On Wed, Feb 02, 2005 at 10:05:31AM -0800, Martin Davis wrote:
> > That's a virtual call, so cannot be statically bound.
> > A simple coordlist[4] on the other hand is usually inlined. 
> > (C++ gurus correct me if I'm wrong)
> Good point.  But surely this alone can't account for the difference
> between GEOS and JTS?  I doubt Java is doing much "inlining" either.

I have a precise answer, after spending the whole day on it.
It doesn't help much. Buffer(2000) runs in 59secs vs. 60secs
of using CoordinateSequence :(

> > Geometry#getCoordinates() returns Coordinate[], not
> CoordinateSequence. 
> I know, that's my point.  The JTS codebase should be using
> getCoordinateSequence almost exclusively.
> > assumption of a "fast" implementation has always been in JTS, 
> > see the toInternalCoordinate() method.
> Yes, but I'm trying to move JTS away from assuming this.
> > Nope. GEOS actually dropped CoordinateArrays and 
> > CoordinateList classes merging all into CoordinateSequence. 
> That's unfortunate - these 3 classes have very different uses.

I guess they will need a change anyway in next JTS, as they
work on Coordinate[], not CoordinateSequence.

> > Note that for DefaultCoordinateSequence, 
> > the #toVector() method doesn't involve any copy.
> Well that removes one possible source of unecessary memory allocation.
> Can you think of anywhere else where memory allocation might be
> happening that could be removed?

Well.. all over the codebase.. not easy to tell.
For sure we have a ::removeRepeatedPoints which always returns
a copy while for JTS only copies when needed, but again I don't 
think it's enough to make that difference.

I think it'll be usefull to have JTS give some debugging/profiling
info to compare operations (allocations, copies...)


> Martin Davis, Senior Technical Architect
> Vivid Solutions Inc.      www.vividsolutions.com
> Suite #1A-2328 Government Street Victoria, B.C. V8T 5G5
> Phone: (250) 385 6040 - Local 308 Fax: (250) 385 6046
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel

More information about the geos-devel mailing list