Микрооптимизация DateTime.DayOfWeekC#

Место общения программистов C#
Ответить
Anonymous
 Микрооптимизация DateTime.DayOfWeek

Сообщение Anonymous »

Прежде всего:
  • Я задаю этот вопрос просто для развлечения и желания учиться. Должен признаться, я люблю возиться с микрооптимизациями (хотя они никогда не приводили к какому-либо значительному увеличению скорости ни в одной из моих разработок).
  • Метод DateTime.DayOfWeek не является узким местом ни в одном моем приложении.
  • И это em>крайне маловероятно, что это будет проблемой в любом другом случае. Если кто-то думает, что этот метод влияет на производительность его приложения,
    он должен подумать о том, когда оптимизировать, а затем выполнить профилирование.
Декомпилируя класс DateTime с помощью ILSpy, мы узнаем, как реализован DateTime.DayOfWeek:

Код: Выделить всё

public DayOfWeek DayOfWeek
{
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (DayOfWeek)((this.InternalTicks / 864000000000L + 1L) % 7L);
}
}

public long Ticks
{
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
get
{
return this.InternalTicks;
}
}
Этот метод выполняет следующее:
  • Тики, соответствующие текущему дню, делятся на существующие количество тиков в день.
  • К предыдущему результату прибавляем 1, чтобы остаток от деления 7 находился между числами 0 и 6.
Это единственный способ вычислить день недели?
Можно ли переопределить это, чтобы ускорить работу?

Подробнее здесь: https://stackoverflow.com/questions/222 ... timization
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»