哪个代码块执行得更快?

时间:2016-12-12 23:48:23

标签: javascript ecmascript-6 developer-tools

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,并且还不知道如何使用开发人员工具。任何意见都将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

第二个是始终是可读性的更好选择,并且使用switch语句将性能优势(如果存在的话)放在边缘。 < / >运算符可能是一个或两个本机代码的指令,我无法想象任何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
  }
}