【发布时间】:2010-12-23 17:40:40
【问题描述】:
在 C 中对小整数使用 char 有什么缺点吗?除了占用/内存优势之外,还有其他优势吗?
特别是,处理器在处理char 上的整数运算时是否可能比在 (long/short) int 上处理整数运算更好或更差?
我知道这将是特定于处理器/系统/编译器的,但我希望在一般情况下得到答案,或者至少是 32 位 Windows 和 Solaris 的一般情况,即我所使用的系统目前正在努力。我还假设已经处理了诸如溢出/环绕问题之类的问题。
更新:Visual Studio 6.0 实际上并没有 Christoph 建议的 stdint.h。在带有少量堆栈循环的 Windows(VS 6.0,调试版本,32 位)上进行一些基准测试,int 和 long 提供了相似的性能,大约是 char 的两倍。在 Linux 上使用 gcc 运行相同的测试,int 和 long 相似,并且都比 char 快,尽管差异不那么明显。
附带说明,我没有花太多时间寻找,但the first implementation of stdint.h for VS 6.0 I found(通过Wikipedia)将uint_fast8_t 定义为unsigned char,尽管至少在我的测试中这似乎更慢。因此,正如 Christoph 正确建议的那样,这个故事的寓意是:始终作为基准!
【问题讨论】:
标签: c performance char int