Можно создать дубликат:
Environment.TickCount vs DateTime.NowДолжен ли я сделать класс оболочки для среды Environment.TickCount?
В моем приложении я требую быстрой операции синхронизации, но точность не так важна. Я проверил скорость выполнения трех операций синхронизации, для которых я знаком с и пришли с этими результатами:
for (int i = 0; i < 1000000; i++)
{
// var time = (DateTime.Now - dt).TotalMilliseconds; // 1131 ms
// var time = (Environment.TickCount - dt); // 7 ms
// var time = stopwatch.ElapsedMilliseconds; // 131 ms
}
Времена были проверены с помощью Stopwatch
. Итак, я хочу использовать Environment.TickCount
(я думаю!), Но его проблема в том, что после 24,9 дней, если пользователь очень не повезет, произойдет операция 2,147,483,647 - -2,147,483,648
и приведет к ошибке переполнения и сбою программы.
Итак, мой вопрос в два раза. Во-первых, это Environment.TickCount
лучший инструмент для задания, заданный моими заданными целями, а во-вторых, кто-нибудь еще написал для него класс-оболочку, и если да, то как вы взяли на учет редкую вероятность переполнения?
@AlexeiLevenkov: Да, я видел эту ветку, но большинство ответов предлагало использовать «Секундомер», и ни один из ответов не говорил о предлагаемых исправлениях к проблеме переполнения. –
Вы действительно хотите использовать 'DateTime.Now.Ticks', поскольку он длинный, поэтому нет переполнения (по крайней мере, не для * очень * долгого времени). Тем не менее, вышеупомянутый вопрос, который вы задаете, вы бы не использовали 'Environment.TickCount', а' DateTime.Ticks'. – casperOne
@RyanPeschel, BTW, вы видели, как Мэтью прокомментировал опрокидывание вопроса - переполнение автоматически заботится о опрокидывании. –