Запуск на Linux (uname говорит :)Std :: хроно или повышение :: поддержка хронографа для CLOCK_MONOTONIC_COARSE
Linux 2.6.32-431.29.2.el6.x86_64 #1 SMP Sun Jul 27 15:55:46 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
Мои тесты показывают, что clock_gettime звонки с часами идентификатором CLOCK_MONOTONIC_COARSE являются на порядок быстрее, чем звонки которые используют идентификатор часов CLOCK_MONOTONIC.
Вот пример вывода из теста, который называется clock_gettime один миллион раз в тугой петле и размеренной отступников время в миллисекундах:
CLOCK_MONOTONIC lapse 795
CLOCK_MONOTONIC_COARSE lapse 27
Это радует меня и делает результаты профилировщика выглядеть лучше, но я надеялся, что я смогу использовать std :: chrono или boost :: chrono для мобильности и стандартного соответствия, не жертвуя этой скоростью. К сожалению, я не нашел способа убедить хроно (один из них) использовать CLOCK_MONOTONIC_COARSE, когда он доступен. Я пробовал chrono :: stable_clock, но результаты сопоставимы с значениями CLOCK_MONOTONIC.
Есть ли способ указать хроно, что вы готовы жертвовать точностью для скорости?
Какой из 'станда :: chrono :: 'часы вы использовали? – 5gon12eder
@ 5gon12eder: Я только что редактировал вопрос, чтобы указать, что я попробовал std :: chrono :: stable_clock –
Если вы знаете характеристики 'CLOCK_MONOTONIC_COARSE', вы можете легко создавать свои собственные часы в стиле хроно. Вам просто нужны несколько 'typedef' и функция' now() '. –