首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ BOOL (类型定义整数)与bool的性能比较

C++ BOOL (类型定义整数)与bool的性能比较
EN

Stack Overflow用户
提问于 2012-05-09 16:02:58
回答 2查看 8.7K关注 0票数 7

我在某处读到,使用BOOL (typedef int)比使用标准的c++类型bool更好,因为BOOL的大小是4字节(即4的倍数),并且它将变量的对齐操作保存到寄存器或这些行的其他东西中……

这是真的吗?我想即使你使用bool (1字节),编译器也会填充堆栈帧以保持4的倍数对齐?

我绝对不是一个关于对齐、寄存器等底层工作原理的专家,所以如果我完全弄错了,我提前道歉。我希望被纠正。:)

干杯!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-09 16:05:25

首先,sizeof(bool)不一定是1。它是implementation-defined,允许编译器编写者自由选择适合目标平台的大小。

而且,sizeof(int)不一定是4

有多个问题可能会影响性能:

  • alignment;
  • memory bandwidth;
  • CPU's有效加载比机器字更窄的值的能力。

对一段特定代码的区别只能通过分析这段代码来确定。

票数 8
EN

Stack Overflow用户

发布于 2012-05-11 18:21:51

关于布尔值,有三种普遍接受的性能驱动实践:

  1. 按if语句检查表达式的顺序很重要,需要小心。
  2. 如果对布尔表达式的检查导致许多分支错误预测,则应(如果可能)将其替换为简单的技巧。
  3. 由于布尔值是最小的数据类型,因此布尔值变量应在结构和类的最后声明,以便填充不会在结构内存布局中添加明显的漏洞。

我从来没有听说过将布尔值替换为(unsigned?)然而,整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10512108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档