{"push_id":609749590,"size":14,"distinct_size":14,"ref":"refs/heads/master","head":"e7a136ec049c84a0af4f091b0f4d281b3c292f0d","before":"b6c89c9575415fc83486706226f097c3a80ebab5","commits":[{"sha":"fe192278394faec07fe37c33c7a3af88c37f8296","author":{"email":"b8b97abae1f60e5467541f010538f7597d3cadc1@users.noreply.github.com","name":"eidyia"},"message":"Eliminate CPU churning on cache highwater check\n\nOn older machines loading high portal dense areas this check is\nusing 70-90% of CPU in Object.keys(cache).length, leading to\nresource starvation, and refresh times up to 10 times longer.\n\nThe LRU cache high-water mark is checked every time we receive portal\nstate from the intel servers to see if we need to do GC. In\nmy case this peaks out  500-1000 portal adds per second on\nan aging laptop with the existing code with chrome-unstable,\nand minimal IITC plugins.  GC itself (ignoring v8 GC) was only\ntaking 15ms, amortized to about 15usec a portal.\n\nUnforutnately the Object.keys(cache).length check was taking\n2-3ms each portal add, and 70-90% of the main thread was spent\nthere, grinding older machines to a halt.\n\nI've just added a counter to track adds to the cache, and am\nupdating it with the real cache size on GC (the two checks\nare almost always identical in higher density areas, and\nwon't lead to performance issues if cache adds are over-\nestimated).\n\nEffects:\n - pushPortalGuidPositionCache goes from using the majority\n   of CPU when loading dense areas to almost nothing.\n\n - Older machines can actually view western europe without\n   grinding the browser to a halt.\n\n - the cache itself is now hitting GC_LIMIT in less than\n   100ms on my old laptop.  (I think increasing GC_LIMIT\n   to 80,000 and GC_KEEP to 40,000 is going to put less\n   load on the Javascript engine GC, and have the cache\n   be useful still, but I left that out of the PR as it's\n   slightly more subjective)\n\n - v8's GC is being slammed slightly less often than normal\n   (it's still thrashing, but this isn't the main culprit)\n\nThe patch has been tested by about half a dozen people\nusing different blends of IITC plugins on both Chrome,\nFirefox and across different OSs and with very different\nhardware. Reports ranged from minor to (more often) huge\nimprovements in load speed and responsiveness in high\ndensity areas.","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/fe192278394faec07fe37c33c7a3af88c37f8296"},{"sha":"dd9f053ed3371005fc25275df6d88c5a247dcb7b","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"Merge pull request #952 from eidyia/pr-guidCacheHWMbug\n\nEliminate CPU churning on cache highwater check","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/dd9f053ed3371005fc25275df6d88c5a247dcb7b"},{"sha":"052d208783e7e7538e5f644b330b925b36c35b72","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"increase latlng to guid cache size","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/052d208783e7e7538e5f644b330b925b36c35b72"},{"sha":"7157eceae33d2827b2c5181621fc3901227ef54d","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"distance-to-portal plugin: integrate with portals list","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/7157eceae33d2827b2c5181621fc3901227ef54d"},{"sha":"d96ee8de505eb7eaa9d9c1e93997132ae72dd283","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"distance-to-portal: fix case where current location is not set","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/d96ee8de505eb7eaa9d9c1e93997132ae72dd283"},{"sha":"2f67616c5d3145224e92ae77eb545b1c3c9e9a26","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"unknown_10/11 flags - renamed to the mission status they represent","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/2f67616c5d3145224e92ae77eb545b1c3c9e9a26"},{"sha":"1dae89b4bc3afeccf140ec28ab5a2a2590b7cc2c","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"mission plugin: initial basic highlighter\ndebug highlighter: remove unknown_10/11 highlighters - not needed any more","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/1dae89b4bc3afeccf140ec28ab5a2a2590b7cc2c"},{"sha":"522ef34f77c86c54cc7586a298d5a6f74f75aef4","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"earth radius: change leaflet and leaflet-draw to use the radius value used by the s2 geometry library\nthis library is used in the ingress backend, so distance calculation, etc are far closer if we use the value from that","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/522ef34f77c86c54cc7586a298d5a6f74f75aef4"},{"sha":"c5b068eda1ed35db7384e6080da024d5e58f4a88","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"ignore portals returned in the map data that are below the portal level requested\nthis shouldn't be needed - the stock intel map completely ignores these so they shouldn't be returned - but since niantic added mission portals to the map they bypass all portal level filtering code, for some reason","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/c5b068eda1ed35db7384e6080da024d5e58f4a88"},{"sha":"d98546a1735212b4ad58f58c940b35ebbc5699b9","author":{"email":"2883f2e8dbecc676a584188419f64aa7fff50602@gmail.com","name":"fkloft"},"message":"fix chat after intel change","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/d98546a1735212b4ad58f58c940b35ebbc5699b9"},{"sha":"5298c98fdde802204eef9beefcc747c6995a8ac2","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"minor api change for chat callbacks, and plugins fixed to use the new changes\n(which broke after today's niantic site update anyway)","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/5298c98fdde802204eef9beefcc747c6995a8ac2"},{"sha":"5e8ddb2344c5762369f635c5c59fa7ae71c48e44","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"move portal entity array decoding into one place, and share the code for the common array elements\nTODO: move link and field entities into here too","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/5e8ddb2344c5762369f635c5c59fa7ae71c48e44"},{"sha":"7e7622584de4d6fe4b3d7f96e99c569bb9c962c2","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"website: update for 0.22.1 release","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/7e7622584de4d6fe4b3d7f96e99c569bb9c962c2"},{"sha":"e7a136ec049c84a0af4f091b0f4d281b3c292f0d","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@jonatkins.com","name":"Jon Atkins"},"message":"bump version after release","distinct":true,"url":"https://api.github.com/repos/fkloft/ingress-intel-total-conversion/commits/e7a136ec049c84a0af4f091b0f4d281b3c292f0d"}]}