使用uint_fast8_t时的性能优势?

mr-*_*-sk 6 iphone types game-engine

因此,在研究了很多引擎后,我一直在为iphone构建一个2d框架.如您所知,引擎架构的世界非常广泛,所以我一直在努力尽可能地应用最佳实践.

我一直在用:

uint_fast8_t mId;
Run Code Online (Sandbox Code Playgroud)

如果我查找uint_fast8_t的定义,我会发现:

/* 7.18.1.3 Fastest-width integer types */
...
typedef uint8_t          uint_fast8_t;
Run Code Online (Sandbox Code Playgroud)

我一直在我的代码中使用这些类型 - 我的问题是,使用这些类型是否有性能优势?幕后究竟发生了什么?除了明显的事实,这是数据的正确数据类型(无符号8位整数),是否值得在我的代码中添加这些?

这是编译器可能会处理的不必要的优化吗?

谢谢.

编辑:没有回复/答案,所以我在这上面给你一个赏金!

Axe*_*ing 21

"快速"整数类型被定义为可用的最快整数类型,至少需要所需的位数(在本例中为8).

如果您的平台将uint_fast8_t定义为uint8_t,那么速度绝对没有区别.

原因是,在不使用其原生字长时,可能存在速度较慢的架构.例如,我可以找到一个参考,其中Alpha处理器uint_fast_8_t被定义为"unsigned int".

  • @ Mr-sk:因为您希望代码在多个平台上运行.假设您的算法需要至少8位的类型,但不要求它精确*8位.您宁愿在"uint8_t"会对性能造成危害的平台上使用更大的类型.解?使用`uint_fast8_t`. (3认同)