Сообщение Re: гарантии для std::chrono::steady_clock::period от 24.06.2015 11:31
Изменено 24.06.2015 11:35 watchmaker
Здравствуйте, B0FEE664, Вы писали:
BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?
Цитата из ода одной популярной реализации:
То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?
Цитата из ода одной популярной реализации:
// Why nanosecond resolution as the default?
// Why have std::system_clock always count in the higest
// resolution (ie nanoseconds), even if on some OSes the low 3
// or 9 decimal digits will be always zero? This allows later
// implementations to change the system_clock::now()
// implementation any time to provide better resolution without
// changing function signature or units.
То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
Re: гарантии для std::chrono::steady_clock::period
Здравствуйте, B0FEE664, Вы писали:
BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?
Цитата из одной популярной реализации:
То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
Так libstd++ и libc++ всегда безусловно возвращают наносекунды, вне зависимости от реальной точности часов — как минимум с этими реализациями проверка точно бесполезна.
BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?
Цитата из одной популярной реализации:
// Why nanosecond resolution as the default?
// Why have std::system_clock always count in the higest
// resolution (ie nanoseconds), even if on some OSes the low 3
// or 9 decimal digits will be always zero? This allows later
// implementations to change the system_clock::now()
// implementation any time to provide better resolution without
// changing function signature or units.
То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
Так libstd++ и libc++ всегда безусловно возвращают наносекунды, вне зависимости от реальной точности часов — как минимум с этими реализациями проверка точно бесполезна.