javascript - 循环与 if 语句的效率

标签 javascript arrays node.js time-complexity

我有一个用例,我想查看一组数据是否与一个非常小的条件列表匹配(为了便于论证,假设它少于 20 个)。

我在客户端和服务器端 (NodeJS) 上执行 JavaScript。我试图在两个选项(或您可能拥有的任何其他选项)之间进行选择,并且不确定复杂性和计算时间会有多大不同。我有一种感觉,他们可以忽略不计。

选项 1:迭代条件列表

var conditions = [{
  prop: 'a', check: '===', val: 'foo'
}, { 
  prop: 'b', check: '!==', val: 'bar'
}];

for (var i=0;i<conditions.length;i++) {
  // Check conditions[i]
  if (conditions[i].check === '===') {
    if (data[conditions[i].prop] === conditions[i].val) {
      // Keep checking
    } else {
      // Fail
    }
  } else if (conditions[i].check === '!==') {
    ...
  }
}

选项 2:将条件转换为 JavaScript

if (data.a === 'foo' && data.b !== 'bar' && ... ) {
  // Passes
}

从技术上讲,选项 1 的执行时间为 O(n),而选项 2 的执行时间为 O(1),但是对于这么小的列表来说,这真的很重要吗,特别是当您考虑执行 JSON.eval() 所需的时间时。和/或为该帐户提供唯一的代码?

最佳答案

首先,eval不好(大多数时候)。

对于所有这些 if 条件,代码看起来很难看,但从性能 Angular 来看,如果不满足条件,其中的代码将不会运行。因此最终需要更长的时间来解析但不运行它。

如果您的迭代计数那么低,那么使用第一个示例时的性能应该不成问题。

当您想要精确测量时间使用情况时,您可以编写一个测试。

关于javascript - 循环与 if 语句的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671369/

相关文章:

javascript - node.js 在导入中使用局部变量

node.js - 如何将日期和天数添加到当前日期

javascript - 在同一页面上分享这个倍数

javascript - PHP 和 HTML 表单邮件发送时使用 javascript 警报不起作用

arrays - 从分类数组转换为二进制矩阵

javascript - 来自偏移量编号的数组项索引

javascript - 为 REST 端点返回不同的 HTTP 响应代码

javascript - 如何加快网页加载时间(CRON?在后台加载 API 调用?)

javascript - 根据 URL 字符串中的变量填充属性值

C++ 用常量值填充数组,循环和改变值