Improved logging API for performance #182
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.
To solve #181.
Changes:
CheckEnabled
is taken out of the internal functions. Instead it will be called inside the macrodefinition used for logging so that the arguments that need not be used for logging won't even be evaluated.LOGP
macro (rarely used - this is useful only for C++11, otherwise it can take only one argument) is only added theCheckEnabled
call inside.LOGF
macro is added to replace cases ofLOGC(fa.disp).form(...)
. This calls theform
method of LogDispatcher as before, but the macro is added theif
condition, like the others.LOGC
macro has changed the syntax. Previous syntax:New syntax:
So, actually the only visible difference between
LOGC
andLOGP
is that inLOGC
the further arguments to be printed are separated by<<
instead of,
. This is required because there's no possibility to resolve the series of comma-separated macro arguments into a series of<<
operator separated arguments by preprocessor macros because preprocessor macros can't be evaluated recursively. The only language facility capable of doing it is variadic templates, available only in C++11 and already available for theLOGP
macro.