【问题标题】:Which one is more efficient: boolean or binary integer?哪一个更有效:布尔整数或二进制整数?
【发布时间】:2018-05-18 09:09:34
【问题描述】:

我必须将二进制值存储在变量或数组元素中,以指示启用或禁用选项。

我相信使用“是”或“否”的效率低于 1 或 0(或为空),但我想知道 1/0 和 TRUE/FALSE 之间在性能或内存使用或其他方面是否有任何区别否则。

之间

$option = 1; # if the option is enabled
$option = 0; # if the option is disabled OR
$option = ""; # if the option is disabled

$option = TRUE; # if the option is enabled
$option = FALSE; # if the option is disabled

推荐哪种方式?为什么?

谢谢。

【问题讨论】:

  • 您自己进行过任何基准测试吗?
  • 没有任何实际区别。如果出于某种难以想象的原因 1/0 更好,那么 PHP 肯定会通过在内部将布尔值作为整数处理来进行微不足道的优化。
  • 永远不要使用像“yes”和“no”或“true”和“false”这样的字符串来存储二进制值。始终使用在布尔上下文中正确评估的格式。例如,(string) "false" 是真的,所以你不想使用它。
  • 感谢您的 cmets。我没有做基准测试,但我做了一些研究并没有找到答案。进行基准测试可能是一个好主意,但除了检查在浏览器中运行脚本需要多长时间之外,我不知道该怎么做。但是,在其他情况下,我看到它的变化很大,而无需更改脚本中的任何内容。
  • Alex 确认字符串不是一个好主意,我从 JJJ 的回答中了解到 TRUE/FALSE 和 1/0 几乎是等价的。事实上,我已经看到 SQLite 在插入数据时会将 TRUE/FALSE 值变为 1/0。如果使用 1/0 整数,我仍然不确定,当值不是 1 时,0、NULL 和“”(空字符串)是否等价。

标签: php performance memory integer boolean


【解决方案1】:

在“其他”类别中;如果选项是从是/否/真/假/开/关的布尔类型,人类将立即理解,但不是从 0/1,它也可以是数字选项。可以通过使用后缀命名选项来解决此问题,例如 _bool,表明它是布尔选项而不是整数选项,这在代码和任何可能的选项配置文件中都是可见且明显的。

【讨论】:

    【解决方案2】:

    这个 answer1 表明 0、null 和 empty 是等价的,这个 answer2 表明 1 和 true 是等价的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2013-09-09
      • 2011-07-30
      • 2021-04-25
      • 2017-08-21
      • 2015-07-21
      相关资源
      最近更新 更多