Чтобы ответить на мой собственный вопрос: решение состояло в том, чтобы ограничить вызовы clock () или любой временной функцией в этом отношении. Общее время выполнения всего тестового примера теперь в 22 раза быстрее.
Я думаю, что смогу дать общий совет после подробного профилирования: если вы можете жить с меньшим временным разрешением и вам действительно нужно оптимизировать свой код для скорости, измените проблему на использование единого глобального таймера и избегайте дорогостоящих сравнение времени для каждого прогона.
Теперь у меня есть простой поток, спящий в течение требуемого времени разрешения и обновляющий переменную atomic int ticker в каждом цикле.
В функции, которую мне нужно было оптимизировать, я просто сравниваю два целых числа (последний тик и текущий тик). Если не равно, пришло время для обновления.