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:
-flto
enables LTO;-fvisibility=hidden
allows to inline H3 library functions in h3-pg (not allowed with default visibility since definitions can change at link time in this case);-fwrapv
allows to inline functions likedegsToRads
/radsToDegs
(PGXS compiles extension with-fwrapv
);-mpc64
mitigates 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=standard
and-ffloat-store
do not solve this problem completely.Another possible solution would be to use SSE with
mfpmath=sse -msse2
.