Don't construct perflog strings unless needed

Previously, if we disabled the perflog at runtime (rather than compile
time), it would *not* disable the implicit construction of C++
std::strings from C char* strings, which turns out to be the most
costly part of perf log operation.

We still need to rework this whole class for efficiency, but at the
very least it's now efficient when disabled.