lea*_*vst 3 c++ performance enums c++11
我可以期待看到这个演员的性能受到打击..
enum class myEnum {A,B,C};
myArray[(int)myEnum::A] = 123;
Run Code Online (Sandbox Code Playgroud)
相比呢?
enum myEnum {A,B,C};
myArray[A] = 123;
Run Code Online (Sandbox Code Playgroud)
我倾向于类型安全的新风格枚举类,但不想以牺牲性能为代价.
它取决于用作索引的枚举值是在编译时知道还是在变量中传递.
这不myArray[(int)myEnum::A]应该受到任何惩罚,但myArray[(int)e]可能取决于物理表征e(即,可能需要"延伸"它).
另一方面,简单扩展是一项微不足道的操作,不太可能出现性能问题:分支预测(条件)和缓存等问题在大多数应用程序(低级别)中更为重要,并且在更高级别的算法很重要.
注意:为了避免运行时场景中的扩展问题,您可以将基类型定义myEnum为编译器算法所需的自然类型,我相信ptrdiff_t这是最合适的.虽然它是一个大整数.