#define PROF_GRUN 2
struct timeval profstart, profstop;
long proftime[3];
+long profipts, profopts;
#define profstart(x) do { gettimeofday(&profstart, NULL); } while (0);
#define profstop(x) do { gettimeofday(&profstop, NULL); \
proftime[x] = ( profstop.tv_sec*1000000+profstop.tv_usec) - \
long int tot = conv + run; \
int convpercent = (((double)conv/(double)tot)*100); \
int runpercent = (((double)run/(double)tot)*100); \
- elog(NOTICE, "PROF: p2g:%lu g2p:%lu gru:%lu (%d%% conv / %d%% run)", \
- proftime[PROF_P2G], proftime[PROF_G2P], proftime[PROF_GRUN], \
- convpercent, runpercent); \
+ elog(NOTICE, "PROF_DET: npts:%lu+%lu=%lu cnv:%lu+%lu run:%lu", \
+ profipts, profopts, profipts+profopts, \
+ proftime[PROF_P2G], proftime[PROF_G2P], \
+ proftime[PROF_GRUN]); \
+ elog(NOTICE, "PROF_SUMMARY: pts:%lu cnv:%d%% run:%d%%", \
+ profipts+profopts, \
+ convpercent, \
+ runpercent); \
} while (0);
#endif
result = GEOSisvalid(g1);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P]=0; profopts=0;
profreport();
#endif
result = GEOSrelateOverlaps(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSrelateContains(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSrelateWithin(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSrelateCrosses(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSrelateIntersects(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
GEOSdeleteGeometry(g1);
result = GEOSrelateTouches(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSrelateDisjoint(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
GEOSdeleteGeometry(g1);
result = GEOSrelatePattern(g1,g2,patt);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
GEOSdeleteGeometry(g1);
relate_str = GEOSrelate(g1, g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
result = GEOSequals(g1,g2);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
GEOSdeleteGeometry(g1);
result = GEOSisSimple(g1);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts=0;
profreport();
#endif
GEOSdeleteGeometry(g1);
result = GEOSisRing(g1);
#ifdef PROFILE
profstop(PROF_GRUN);
- profstart(PROF_G2P); profstop(PROF_G2P);
+ proftime[PROF_G2P] = 0; profopts = 0;
profreport();
#endif
GEOSdeleteGeometry(g1);
int size;
#ifdef PROFILE
- profstart();
+ profstart(PROF_G2P);
#endif
// Initialize exploded lwgeom
#ifdef PROFILE
profstop(PROF_G2P);
+ profopts = lwgeom_npoints_recursive(SERIALIZED_FORM(result));
profreport();
#endif
Geometry *ret=NULL;
#ifdef PROFILE
- profstart();
+ profipts = lwgeom_npoints_recursive(SERIALIZED_FORM(geom));
+ profstart(PROF_P2G);
#endif
type = lwgeom_getType(geom->type);