[geos-devel] Performance of GEOS compared to JTS

Martin Davis mbdavis at VividSolutions.com
Wed Nov 6 16:30:54 EST 2002


JTS actually exhibits *sub-linear* performance for this test.  (See test output below).  The reason for this is is that the indexing used in intersection detection drastically reduces the number of attempts to only check for intersections close to where the geometrys actually interact.  So, while the number of segments in one of the geometrys increases, the number of actual intersections is relatively constant.  

Not sure why the GEOS code doesn't do the same thing, though.  The metrics for the segment intersection test counts look ok - they hardly change, which is what you'd expect, since the number of locations where the geometries intersect doesn't change.  My suspicion is that the poor performance is due to memory allocation - there are quite a few places where small objects are allocated, in proportion to the total number of segments.  I think there's two ways of improving this: (a) use value objects instead of allocating memory in some cases (e.g. in the sweep line index) and (b) allocate memory in larger chunks and use sub-allocation.

One thing that might prove whether memory allocation is causing this symptom is to run the code on Linux and see whether the performance is different (since Linux may have a better - or worse! - memory allocator).

Metrics from JTS test:

# overlapping MCs: 34
# segment intersection tests: 38
n Pts: 10   Executed in 20 ms

# overlapping MCs: 40
# segment intersection tests: 26
n Pts: 100   Executed in 20 ms

# overlapping MCs: 44
# segment intersection tests: 7
n Pts: 1000   Executed in 80 ms

# overlapping MCs: 44
# segment intersection tests: 5
n Pts: 10000   Executed in 180 ms


Martin Davis, Senior Technical Specialist
Vivid Solutions Inc.
Suite #1A-2328 Government Street   Victoria, B.C.   V8T 5G5
Phone: (250) 385 6040    Fax: (250) 385 6046
EMail: mbdavis at vividsolutions.com  Web: www.vividsolutions.com


> -----Original Message-----
> From: Paul Ramsey [mailto:pramsey at refractions.net]
> Sent: Wednesday, November 06, 2002 9:25 AM
> To: geos-devel at geos.refractions.net
> Subject: Re: [geos-devel] Performance of GEOS
> 
> 
> I dunno, a factor of two in the worst case isn't *so* bad. Martin, 
> should the times be increasing exponentially as the vertices increase 
> linearly (is that what JTS does too)?
> 
> Norman Vine wrote:
> > Martin Davis writes:
> > 
> > 
> >>Ok, let us know what you find out.
> > 
> > 
> > A little better - but not what I was hoping for
> > 
> > This is on a 733mhz PIII
> > Cygwin gcc 3.2
> > 
> > Norman
> > 
> > Code as in CVS
> > 
> > n Pts: 1000   Executed in 1000
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 2000   Executed in 4000
> > # overlapping MCs: 44
> > # segment intersection tests: 7
> > n Pts: 3000   Executed in 10000
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 4000   Executed in 22000
> > # overlapping MCs: 44
> > # segment intersection tests: 5
> > n Pts: 5000   Executed in 92000
> > # overlapping MCs: 44
> > # segment intersection tests: 7
> > n Pts: 6000   Executed in 156000
> > # overlapping MCs: 44
> > # segment intersection tests: 6
> > n Pts: 7000   Executed in 224000
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 8000   Executed in 315000
> > 
> > < manually stopped test before completion >
> > 
> > 
> > My test  code with no pure virtuals and inlined code
> > 
> > n Pts: 1000   Executed in 0
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 2000   Executed in 2000
> > # overlapping MCs: 44
> > # segment intersection tests: 7
> > n Pts: 3000   Executed in 4000
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 4000   Executed in 8000
> > # overlapping MCs: 44
> > # segment intersection tests: 5
> > n Pts: 5000   Executed in 16000
> > # overlapping MCs: 44
> > # segment intersection tests: 7
> > n Pts: 6000   Executed in 64000
> > # overlapping MCs: 44
> > # segment intersection tests: 6
> > n Pts: 7000   Executed in 110000
> > # overlapping MCs: 44
> > # segment intersection tests: 4
> > n Pts: 8000   Executed in 148000
> > # overlapping MCs: 44
> > # segment intersection tests: 5
> > n Pts: 9000   Executed in 194000
> > # overlapping MCs: 44
> > # segment intersection tests: 5
> > n Pts: 10000   Executed in 255000
> > 
> > 
> > 
> > _______________________________________________
> > geos-devel mailing list
> > geos-devel at geos.refractions.net
> > http://geos.refractions.net/mailman/listinfo/geos-devel
> > 
> 
> 
> -- 
>        __
>       /
>       | Paul Ramsey
>       | Refractions Research
>       | Email: pramsey at refractions.net
>       | Phone: (250) 885-0632
>       \_
> 
> 
> _______________________________________________
> 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