benchmark() now takes a message instead of getting the message from __PRETTY_FUNCTION__, since it is more explicit