maskVignettedRegion is doing a loop over pixels in a detector to check inclusion in a polygon. This is causing a large number of allocations, and a large runtime due to the nature of python loops.
This ticket adds a contains c++ method overload for supplying x,y pairs instead of Point objects (it creates one internally). The python c++ binds make use of this and auto vectorization to allow arrays to be passed as arguments. The arrays can then be looped over in c++ instead of python making things much more efficient.
Finally the ticket updates ip_isr to make use of this functionality.
This results in a speed up of approximately 8x for isr task where the maskVignettedRegion is used.
This is awesome! I'll link the afw PR here which won't show up on the sidebar: https://github.com/lsst/afw/pull/659