Разница между ElapsedTicks, ElapsedMilliseconds, прошло.Прошли миллисекунды.TotalMilliseconds? (С#)
Я полностью запутался между этими 4. В чем разница между ElapsedMilliseconds (long), ElapsedTicks (long), прошедшими.TotalMilliseconds (double)и истекли.Миллисекунды (int)?
У меня есть функция
{
Stopwatch sw = new Stopwatch();
sw.Start();
MyTimeConsumingAction();
sw.Stop();
sw.//what?
}
Как получить правильное время, затрачиваемое моим длительным процессом из истекшего свойства объекта секундомера в миллисекундах?
Edit: я пробовал документацию msdn, но там нет ничего подробного..
4 ответов
прошедшее.TotalMilliseconds (double) возвращает общее количество целых и дробных миллисекунд, прошедших с момента создания
например, секундомер, остановленный на 1.23456 секунд, вернет 1234.56 в этом свойстве. См.TimeSpan.TotalMilliseconds на MSDN
прошедшее.Миллисекунды (int) возвращает количество целых миллисекунд в текущей секунде
например, секундомер на 1.234 секунд вернется 234 в этом отеле. См.промежутка времени.ElapsedMilliseconds
ElapsedTicks (long) возвращает тики с момента запуска секундомера.
в контексте исходного вопроса, относящегося к классу секундомера, ElapsedTicks - это количество прошедших тиков. Тики происходят со скоростью секундомера.Частота, поэтому, чтобы вычислить секунды, вычислите: numSeconds = секундомер.ElapsedTicks / Секундомер.Частота.
старый ответ определяется как число 100 наносекундных периодов, что является правильным в контексте класса DateTime, но не правильным в контексте класса Stopwatch. См.секундомер.ElapsedTicks на MSDN.
ElapsedMilliseconds возвращает округленное число до ближайшей полной миллисекунды, поэтому может не хватать точности.TotalMilliseconds свойство может дать.
прошедшее.TotalMilliseconds-это double, который может возвращать время выполнения частичная миллисекунда в то время как ElapsedMilliseconds Int64. например, секундомер в 0.0007 миллисекунд вернет 0, или 1234.56 миллисекунд вернет 1234 в этом свойстве. Поэтому для точности всегда используют прошедшее.TotalMilliseconds.
посмотреть секундомер.ElapsedMilliseconds on MSDN для разъяснения.
С уважением,
отражение класса секундомера показывает, что ElapsedMilliseconds истекшие тики преобразуются (и округляются) в миллисекунды:
public TimeSpan Elapsed
{
get
{
return new TimeSpan(this.GetElapsedDateTimeTicks());
}
}
public long ElapsedMilliseconds
{
get
{
return this.GetElapsedDateTimeTicks() / 10000L;
}
}
в кратком объяснении от в MSDN:
ElapsedMilliseconds
Это свойство представляет прошедшее время, округленное до ближайшего целого значения миллисекунды. Для более точных измерений используйте свойства Elapsed или ElapsedTicks.
ElapsedTicks
Это свойство представляет количество прошедших ТИКов в базовом механизме таймера. Тик-это наименьшая единица времени, которую может измерить таймер секундомера. Используйте поле частота для преобразования ElapsedTicks значение в несколько секунд.
Elapsed
используйте свойство Elapsed для получения значения прошедшего времени с помощью методов и свойств TimeSpan. Например, можно отформатировать возвращаемый экземпляр TimeSpan в текстовое представление или передать его другому классу, для которого требуется параметр TimeSpan.