The BC Voting Area dataset is a convenient test case, since it has lots of large polygons (shown here with interior points computed).
select ST_PointOnSurface(geom) from ebc.voting_area;
Here's the query timings comparison, using the improved GEOS code and the previous implementation:
|341 ms||4,613 ms||x 13||369 ms|
As expected, there is a dramatic improvement in performance. The improved ST_PointOnSurface runs 13 times faster than the old code. And it's now as fast as ST_Centroid. It's also more robust and tolerant of invalid input (although this test doesn't show it).
This should show up in PostGIS in the fall release (PostGIS 3 / GEOS 3.8).
On to the next improvement... (and also gotta update the docs and the tutorial!)