Enable link time optimization #75
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Enabling link time optimization for h3-pg/h3 improves performance by ~12--15%.
Test query:
Added compilation flags:
-fltoenables LTO;-fvisibility=hiddenallows to inline H3 library functions in h3-pg (not allowed with default visibility since definitions can change at link time in this case);-fwrapvallows to inline functions likedegsToRads/radsToDegs(PGXS compiles extension with-fwrapv);-mpc64mitigates effect of extened floating point precision on x86 (using x87) and also improves performance by ~2--5%Without
-mpc64, LTO (inlining specifically?) causes subtle differences in floating point calculation results on x86, several tests failing for both h3-pg and h3 library.-fexcess-presicion=standardand-ffloat-storedo not solve this problem completely.Another possible solution would be to use SSE with
mfpmath=sse -msse2.