相关疑难解决方法(0)

是什么让Enum.HasFlag这么慢?

我正在做一些速度测试,我注意到Enum.HasFlag比使用按位操作慢大约16倍.

有谁知道Enum.HasFlag的内部以及为什么它如此之慢?我的意思是两倍慢不会太糟糕但是当它慢了16倍时它会使该功能无法使用.

如果有人想知道,这是我用来测试其速度的代码.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace app
{
    public class Program
    {
        [Flags]
        public enum Test
        {
            Flag1 = 1,
            Flag2 = 2,
            Flag3 = 4,
            Flag4 = 8
        }
        static int num = 0;
        static Random rand;
        static void Main(string[] args)
        {
            int seed = (int)DateTime.UtcNow.Ticks;

            var st1 = new SpeedTest(delegate
            {
                Test t = Test.Flag1;
                t |= (Test)rand.Next(1, 9);
                if (t.HasFlag(Test.Flag4))
                    num++;
            });

            var st2 = new SpeedTest(delegate
            {
                Test t = …
Run Code Online (Sandbox Code Playgroud)

.net c#

64
推荐指数
3
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1