枚举评估和整数之间的性能比较

时间:2009-01-02 12:45:54

标签: c# enums performance integer

之间的速度会有所不同吗?
if (myInt == CONST_STATE1)

if (myEnum == myENUM.State1)

在c#中?

3 个答案:

答案 0 :(得分:11)

在C#中,无论如何,枚举器都被编译为常量,所以好处是代码易读性

答案 1 :(得分:2)

使用Enums时要小心的是不要使用任何需要反射的操作(或小心使用它们)。例如:

  1. myEnumValue.ToString()。
  2. Enum.Parse()
  3. Enum.IsDefined()
  4. Enum.GetName()
  5. Enum.GetNames()
  6. 对于常量,不存在执行任何需要反射的操作的选项。但是,如果是枚举,它确实如此。所以你必须小心这一点。

    我见过个人资料报告,其中与枚举验证/反射相关的操作占用了CPU时间的5%(每次调用API方法时都会进行枚举验证)。通过编写一个缓存正在使用的枚举类型的反射结果的类,可以大大减少这种情况。

    话虽如此,我建议根据从设计角度来看有意义的决定使用enum vs. constant 。这是确保团队了解涉及反射的操作的性能影响。

答案 2 :(得分:1)

另外,我不确定你是否需要担心这一点。这听起来像是过早的优化。我敢肯定,在任何系统中,都存在比枚举比较更大的瓶颈。 :)