在平台上获取可移植的、更大更快的(无符号)整数类型

Obtain, portably, larger and faster (unsigned) integer type on a platform

想象一下自定义任意精度整数类型的假设情况,它必须 运行 尽可能快,同时完全可移植。为了实现这个目标,我们需要使用给定平台可用的更大更快的(无符号)整数类型。

它必须更大,因为这样我们将在每个周期处理最大数量的比特。

它必须更快,因为在某些平台上有可用的更大的整数类型,但只能对它们进行整数运算的子集(例如,在 x86 中,128 位整数不允许执行单指令加进位运算)。

在每个具有 C99 标准编译器的平台上(如果可能的话)获得更大更快整数类型的最佳和最便携的方法是什么?

What is the best and most portable way to obtain the larger and faster integer type on every platform that has a C99 standard compiler?

用所有候选类型编译一个测试程序,运行它,计时,select最快,然后编译你的应用程序。

换句话说,找到最快的类型是在配置时完成的,而不是在编译时。这具有使用最快类型的额外好处,即使实现在于 stdint.h.