相关疑难解决方法(0)

DateTime.DayOfWeek微优化

首先:

  1. 我问这个问题只是为了好玩和渴望学习.我不得不承认我喜欢搞微观优化(虽然他们从未在我的任何开发中导致任何显着的速度提升).

  2. DateTime.DayOfWeek方法并不代表我的任何应用中的瓶颈.

  3. 并且它不太可能 成为任何其他问题.如果有人认为这种方法对他的应用程序的性能有影响,他应该考虑何时进行优化,然后,他应该进行分析.

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. 与当天相对应的刻度除以一天中现有的刻度数.

  2. 我们在前面的结果中加1,以便除数7的余数在0和6之间.

这是计算星期几的唯一方法吗?

是否有可能重新实现它以使其运行更快?

c# performance datetime dayofweek micro-optimization

20
推荐指数
1
解决办法
9646
查看次数