您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

是什么使Enum.HasFlag这么慢?

是什么使Enum.HasFlag这么慢?

有谁知道Enum.HasFlag的内部原理,为什么它这么慢?

实际检查只是简单的签入Enum.HasFlag-这不是问题。话虽如此,它比您自己的位检查要慢…

造成这种速度下降的原因有两个:

首先,Enum.HasFlag进行显式检查,以确保枚举的类型和标志的类型都是相同的类型,并且来自相同的枚举。这张支票有一些费用。

其次,有一个不幸的箱和值的拆箱一次转化的过程中UInt64发生的内部的HasFlag。我认为,这是由于必须Enum.HasFlag与所有枚举一起使用,而与基础存储类型无关。

话虽如此,它有一个巨大的优势Enum.HasFlag-它可靠,整洁,并使代码非常明显和富有表现力。在大多数情况下,我认为这值得付出成本- 但是,如果您在性能非常关键的循环中使用它,则值得自己检查一下。

其他 2022/1/1 18:19:36 有488人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶