首先:
我问这个问题只是为了好玩和渴望学习.我不得不承认我喜欢搞微观优化(虽然他们从未在我的任何开发中导致任何显着的速度提升).
该DateTime.DayOfWeek
方法并不代表我的任何应用中的瓶颈.
并且它不太可能 成为任何其他问题.如果有人认为这种方法对他的应用程序的性能有影响,他应该考虑何时进行优化,然后,他应该进行分析.
DateTime
使用ILSpy 反编译类,我们了解如何DateTime.DayOfWeek
实现:
[__DynamicallyInvokable]
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;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法执行以下操作:
与当天相对应的刻度除以一天中现有的刻度数.
我们在前面的结果中加1,以便除数7的余数在0和6之间.
这是计算星期几的唯一方法吗?
是否有可能重新实现它以使其运行更快?