[geos-devel] Current project status

Norman Vine nhv at cape.com
Sun Nov 24 21:29:03 EST 2002


Martin Davis writes:
>
> So my take on the statistics below is that GEOS is now somewhat faster than JTS 
> 
> > Yury A. Bychkov wrote
> > 
> > Here are the performance results (P4-2.53):

> >  n Pts: 256000  Executed in   4276 ms.

This is better but still a lot slower then the Jave

ie 
on November 08 Martin Davis  wrote:

> I'm running on a 1.1 GHz machine, not a 1.9 GHz box
> n Pts: 256000   Executed in 5307 ms

and this is before my early reject patch !
which means you should be getting ~4000 ms with the early reject

so the way I see it is Yury's 'C' code is running at best 
at about 50% of the speed of the Java code.

Inlining the Coordinate, CoordinateList and Envelope Classes
    < all methods except the toString method >
will make up this differance

Out of curiosity has anyone used a memory checker
to make sure we aren't leaking ?

Cheers

Norman


< trials of a  'C' hacker follows >

Test 1 - code as from todays CVS
n Pts: 1000000  Executed in  81988 ms.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
 54.55     20.15    20.15 364917628     0.00     0.00  Coordinate::Coordinate(Coordinate const&)
 20.19     27.61     7.46 157410776     0.00     0.00  CoordinateList::getAt(int)
  4.90     29.42     1.81 40942622     0.00     0.00  Envelope::init(double, double, double, double)
  2.79     30.45     1.03 10352452     0.00     0.00  SegmentIntersector::addIntersections(Edge*, int, Edge*, int)


Test 2 - with Coordinate and CoordinateList Inlined  < 30 % improvement >
n Pts: 1000000  Executed in  57642 ms.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
 16.67      1.21     1.21        2     0.60     0.62  RobustCGAlgorithms::isOnLine(Coordinate, CoordinateList)
 15.84      2.36     1.15        2     0.57     0.57  Geometry::hasNullElements(CoordinateList)
 11.02      3.16     0.80 10352452     0.00     0.00  SegmentIntersector::addIntersections(Edge*, int, Edge*, int)
 10.61      3.93     0.77 40942622     0.00     0.00  Envelope::init(double, double, double, double)
  9.78      4.64     0.71 27295080     0.00     0.00  Envelope::init(Coordinate, Coordinate)


Test3 - Coordinate, CoordinateList, Envelope inlined
n Pts: 1000000  Executed in  40978 ms.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
 25.87      2.22     2.22        2     1.11     1.15  RobustCGAlgorithms::isOnLine(Coordinate, CoordinateList)
 24.48      4.32     2.10        2     1.05     1.05  Geometry::hasNullElements(CoordinateList)
 20.75      6.10     1.78 10352452     0.00     0.00  SegmentIntersector::addIntersections(Edge*, int, Edge*, int)
  7.81      6.77     0.67 17999888     0.00     0.00  RobustCGAlgorithms::orientationIndex(Coordinate, Coordinate, Coordinate)
  7.69      7.43     0.66        4     0.17     0.17  RobustCGAlgorithms::isPointInRing(Coordinate, CoordinateList)
  2.80      7.67     0.24        2     0.12     0.12  RobustCGAlgorithms::isCCW(CoordinateList)
  2.80      7.91     0.24        2     0.12     0.12  GeometryTestFactory::createSineStar(double, double, double, double, int, int)




More information about the geos-devel mailing list