On 08 Jan 2014, at 10:12, Koehne Kai <kai.koe...@digia.com> wrote:
>
> You can then use it like that:
>
> If (qtCoreIo().isDebugEnabled()) {
> QString x = expensive();
> qCDebug(qtCoreIo) << "Expensive: " << x;
> }
>
> Anyhow, note that qCDebug(qtCoreIo) expands to
>
> for (bool enabled = qtCoreIo().isDebugEnabled(); Q_UNLIKELY(enabled); enabled
> = false)
> QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
> qtCoreIo().categoryName()).debug() <<
>
Out of curiosity: is there a reason you use 'for' and not an 'if' statement?
> so this should be needed only if your 'expensive' operations aren't behind
> the << anyway.
>
>> Also, what's the overhead of a qCDebug for a disabled category? Qt should
>> never emit debug warnings in its default configuration, so we're talking
>> about
>> many hits to that.
>
> The overhead for a non-enabled qCDebug is basically a function call + one
> boolean check (isDebugEnabled() will be inlined).
>
If code size or performance is a problem for certain critical code sections,
you could also use a full macro, like:
qCDebug(category, a << b << "some string");
This construct looks rather strange or even ugly, but has the advantage that it
can be completely compiled away.
Regards,
Kurt
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development