tile38/internal
tidwall 9998e03f6f Optimization for non-cross geofence detection
This commit fixes a performance issue with the algorithm that
determines with geofences are potential candidates for
notifications following a SET operation.

Details

Prior to commit b471873 (10 commits ago) there was a bug where
the "cross" detection was not firing in all cases. This happened
because when looking for candidates for "cross" due to a SET
operation, only the geofences that overlapped the previous
position of the object and the geofences that overlapped the new
position where searched. But, in fac, all of the geofences that
overlapped the union rectangle of the old and new position should
have been searched.

That commit fixed the problem by searching a union rect of the
old and new positions. While this is an accurate solution, it
caused a slowdown on systems that have big/wild position changes
that might cross a huge number of geofences, even when those
geofences did not need actually need "cross" detection.

The fix

With this commit the geofences that have a "cross" detection
are stored in a seperated tree from those that do not. This
allows for a hybrid of the functionality prior and post b471873.

Fixes #583
2020-10-23 09:51:27 -07:00
..
bing Code cleanup 2019-10-30 10:17:59 -07:00
clip Fixed clip test #558 2020-05-03 09:59:49 -07:00
collection Minimize sorting of collection fields 2020-03-22 07:58:03 -07:00
deadline Code cleanup 2019-10-30 10:17:59 -07:00
endpoint Updated Kafka version 2020-07-03 11:57:15 -07:00
expire Fixed data race for hooks with ttls 2019-10-08 09:26:55 -07:00
glob Code cleanup 2019-10-30 10:17:59 -07:00
hservice Faster point in polygon / GeoJSON updates 2018-10-13 04:30:48 -07:00
log Code cleanup 2019-10-30 10:17:59 -07:00
server Optimization for non-cross geofence detection 2020-10-23 09:51:27 -07:00