In LOG, don't allocate strings and make string concatenations if log level is not recorded
I did some profiling on snapcast (while working on https://github.com/badaix/snapcast/issues/1423). From my measurements, I concluded that LOG currently allocates strings and makes string concatenations even if the log level at hand is not recorded.
Hence I tweaked aixlog.hpp to stop this. I also added an caching layer for the decision if a certain message is actually recorded, depending on the log level.
Pull Request Checklist
-
[x] Contributions must be licensed under the GPL-3.0 License
-
[x] This project loosely follows the Google C++ Style Guide
-
[x] For better compatibility with embedded toolchains, the used C++ standard should be limited to C++17
-
[x] Code should be formatted by running
make reformat -
[x] Branch from the
developbranch and ensure it is up to date with the currentdevelopbranch before submitting your pull request. If it doesn't merge cleanly withdevelop, you may be asked to resolve the conflicts. Pull requests to master will be closed. -
[x] Commits should be as small as possible while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests).
-
[x] Pull requests must not contain compiled sources (already set by the default .gitignore) or binary files
-
[x] Test your changes as thoroughly as possible before you commit them. Preferably, automate your test by unit/integration tests. If tested manually, provide information about the test scope in the PR description (e.g. “Test passed: Upgrade version from 0.42 to 0.42.23.”).
-
Create Work In Progress [WIP] pull requests only if you need clarification or an explicit review before you can continue your work item.
-
If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review by contacting us via email.
-
Post review:
- If a review requires you to change your commit(s), please test the changes again.
- Amend the affected commit(s) and force push onto your branch.
- Set respective comments in your GitHub review to resolved.
- Create a general PR comment to notify the reviewers that your amendments are ready for another round of review.