Ну, первое, что я бы предложил, это использовать core.time или std.datetime.У него есть StopWatch
.Разве это не достаточно быстро?Он использует все стандартные монотонные часы для системы, и я бы надеялся , что это будет достаточно быстро.Это, безусловно, самая высокая точность, которую вы собираетесь получить (хотя, как высокая точность влияет на скорость, я не знаю).Однако, если это не достаточно быстро, я совсем не уверен, что другие ваши варианты лучше.Как правило, вы получаете вторую точность или высокую точность.Там не так много междуИ с высокой точностью, как правило, это, по крайней мере, микросекундная точность, вопрос в том, насколько она выше.Точность в 1/4 секунды не совсем нормальная.
Предложение Cybershadow о clock может быть уловкой - конечно, это единственный вариант, который является стандартным C, насколько я знаю, - но этоможет или не может быть достаточно быстрым.
Помимо clock ... В Linux, если вы хотите немонотонный способ получить время с большей точностью, чем одна секунда, я считаю,что gettimeofday - ваш единственный реальный вариант, но я не знаю, насколько это быстро.В Windows лучшее немонотонное решение, о котором я знаю, это getSystemTimeAsFiletime , но в Windows есть несколько временных функций , с которыми можно поиграться.
Выможете взглянуть на Clock.currStdTime
в std.datetime, чтобы узнать, как это сделать (хотя он использует clock_gettime
в Posix, если он доступен, что и используется в core.time - хотя и с другими часами - так что вы, вероятно, захотите else
часть этой функции для Linux, если StopWatch
слишком медленная для вас).Однако он конвертируется в hnsecs с полуночи 1 января 1 года нашей эры, поэтому в зависимости от того, что вы делаете с числом, вы можете пропустить эту часть вычисления.