Closed reventlov closed 4 years ago
We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and then comment @googlebot I fixed it.
. If the bot doesn't comment, it means it doesn't think anything has changed.
ℹ️ Googlers: Go here for more info.
We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and then comment @googlebot I fixed it.
. If the bot doesn't comment, it means it doesn't think anything has changed.
ℹ️ Googlers: Go here for more info.
This change adds somewhat naive common subexpression elimination in a few places in the generated C++ code. This has little or no effect when C++ compiler optimizations are enabled, however, some users expect to be able to run some code (e.g., tests) with C++ optimizations disabled.
With this change, certain constructs are many orders of magnitude faster in unoptimized builds. The included test (complex_offset_test.cc) goes from >300s (timing out under Bazel) to <1s runtime.
Note that this does not perform any inlining, and the CSE is fairly naive (text-based), so unoptimized builds may still do a lot of repeated work. It also does not add CSE everywhere it could be added; only to places that are likely to have performance issues. Users who care even slightly about performance are still advised to compile with optimizations.