Log and benchmark the workings of a
single block and silence whatever
logging that may have happened inside it (unless use_silence is
set to false).
The benchmark is only recorded if
the current level of the logger matches the log_level, which makes
it easy to include benchmarking statements in production software that will
remain inexpensive because the benchmark will only be conducted if
the log level is low enough.