c - 整数还是字符?哪个更快?
问题描述
我的 C 程序在内存中存储了许多整数值,并经常读取它们并对其进行比较。类型的范围unsigned char
是足够的,但我已经使用int
了,因为速度对我来说比内存消耗更重要,我认为 CPU 可能int
更快地与 s 一起工作。但这只是一个粗略的直觉猜测,我还不能确定。
解决方案
鉴于这些约束,您可能应该使用uint_fast8_t
which 为您提供通常最快的无符号类型,该类型至少能够存储uint8_t
值(当然,uint8_t
通常unsigned char
是 )。类型<stdint.h>
在C99及以后定义(uint_fast8_t
需要定义,但不一定相同uint8_t
,uint8_t
如果CPU不支持8位字节则不需要定义)。
如果您沿着这条路线走,您可能需要重新了解函数printf()
和scanf()
函数族的正确格式说明符。这些定义在<inttypes.h>
. 使用其他任何东西都充满了可移植性问题(至少在理论上)。
推荐阅读
- c# - 在 Unity ARCore for Android 中动态创建 4 个已知点之间的平面
- python - algolia-django 在 algolia 索引中更新多对多模型的问题
- javascript - 如何在`while(true)`循环中每隔`n`和`m`秒调用两个异步函数?
- c++ - 如何在 C++ 中返回模板数组
- c# - AWS Lambda 文件上传到 ASP.NET Core 2.1 Razor 页面正在损坏二进制文件
- java - 将输入秒转换为月份
- r - purrr 结合 pmap 和 nest
- matlab - 使用一个批处理文件和 qsub 并行运行多个 MATLAB 程序
- java - Android 应用程序中的条件语句未按预期工作
- java - 使用 JavaFX 增加半径时出现圆形问题