I found one problem with ImageVariable.patch: MaskPolygon::parsePolygonString creates MaskPolygon instance without initialized bounding box. Before it was fixed by operator=, with ImageVariable.patch the instance is shared or copied with default copy constructor so it never gets fixed and masks in nona do not work correctly. The attached patch should fix it.
ImageVariableGroup.patch: actually I'd expect that getImage is inlined, but it is not for same reason. However I don't fully understand the code around. GreatCircles-image.patch: I think this is not a workaround, equirectangularImage is still the same and it does not make sense to construct it again for each line. Your patch however seems to help. ** Patch added: "mask_bbox.patch" https://bugs.launchpad.net/hugin/+bug/1778802/+attachment/5157946/+files/mask_bbox.patch -- You received this bug notification because you are a member of Hugin Developers, which is subscribed to Hugin. https://bugs.launchpad.net/bugs/1778802 Title: PATCH: speed improvements Status in Hugin: New Bug description: I tried to profile hugin on a large project with 500 images and 100000 control points. I identified and fixed some bottlenecks: ImageVariable.patch - reimplemented ImageVariable with shared_ptr - reduces complexity from O(n) to O(1) ImageVariableGroup.patch - move some method calls out of a loop GreatCircles.patch - reduce number of segments for short lines GreatCircles-image.patch - HuginBase::SrcPanoImage is expensive, initialize equirectangularImage only once To manage notifications about this bug go to: https://bugs.launchpad.net/hugin/+bug/1778802/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~hugin-devs Post to : hugin-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~hugin-devs More help : https://help.launchpad.net/ListHelp