【问题标题】:Which block of code will execute faster? [closed]哪个代码块执行得更快? [关闭]
【发布时间】:2017-04-27 22:49:49
【问题描述】:

B1

if (this.id === 'username') {
  switch (this.value.length) {
    case  0:
    case  1:
    case  2:
      // 'Username must be at least 3 characters'
      break;
    case  3:
    case  4:
    case  5:
    case  6:
    case  7:
    case  8:
    case  9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
      // Another if else statement
      break;
    default:
      // 'Username must be at most 20 character'
  }
}

B2

if (this.id === 'username') {
  if (this.value.length < 3) {
    // 'Username must be at least 3 characters'
  } else if (this.value.length > 20) {
    // 'Username must be at most 20 characters'
  } else {
    // Another if else statement
  }
}

我会自己使用浏览器开发工具进行测试,但不幸的是,我不擅长编程,还不知道如何很好地使用开发工具。任何意见将不胜感激。

【问题讨论】:

  • 如果你是一个没有使用过开发工具的“n00b”,那么你可能不应该关心性能。
  • 我的意思是,你应该学习如何去做。如果您对如何使用这些工具有疑问,那很好,但我看不出这个问题有什么努力。
  • @gatekeeper01 不,这个社区只有严格的、精心编写的指导方针,使其成为解决实际问题的好地方。如果您只是更好地学习了您的交易工具,您的问题可以在大约 29 秒内自行解决。让别人告诉你怎么做或答案是什么,你将一事无成。您将通过反复试验了解更多信息。如果你没有时间,那就抓紧时间。
  • FWIW,您不必使用浏览器来分析代码。你也可以在 Node.js 中轻松做到这一点。

标签: javascript ecmascript-6 developer-tools


【解决方案1】:

它可以忽略不计,实际上取决于用户的 Javascript 解析器。

您应该使用第二个选项,因为它的可读性要好得多,并且以后更容易更改。此外,如果您非常关心性能,那么第二个就是更少的字符,这意味着您的网站加载速度会更快。

【讨论】:

    【解决方案2】:

    第二个是总是更好的可读性选择,而使用switch 语句的性能优势(如果存在的话)将是微不足道的。 &lt; / &gt; 运算符可能是一两条本机代码的指令,我无法想象任何 switch 语句会编译成这么小的东西。

    我什至懒得去测试差异;除非你能证明那几行是你程序的瓶颈,否则不值得你花时间。 (在这种情况下,我会感到非常惊讶。)

    此外,如果您真的关心良好的性能实践,您可以缓存 length 并获得小的可读性胜利。

    if (this.id === 'username') {
      var length = this.value.length
      if (length < 3) {
        // 'Username must be at least 3 characters'
      } else if (length > 20) {
        // 'Username must be at most 20 characters'
      } else {
        // Another if else statement
      }
    }
    

    【讨论】:

    • 缓存length 意味着将访问this.value.length 的结果分配给一个局部变量(为简单起见,我称之为length),因此您不必多次评估同一个表达式.
    • 哦,对,对,对。我不确定你指的是什么。一旦我真正实施它,我当然会这样做。尽管如此,还是感谢您的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多