Javascript toLowerCase() 性能与变量创建

标签 javascript performance

什么更有效率?:

var text="ABCdef";
var lowerVersion=text.toLowerCase();
if (lowerVersion=='abcdef' || lowerVersion=='asdfgh' || lowerVersion=='zxcvbn'){...

var text="ABCdef";
if (text.toLowerCase()=='abcdef' || text.toLowerCase()=='asdfgh' || text.toLowerCase()=='zxcvbn'){...

即创建变量是否比多次运行 toLowerCase() 更昂贵?

谢谢。

最佳答案

这是 JavaScript。答案将是:视情况而定。这取决于您使用的引擎、您的数据、上下文中的其他内容、第一个匹配项还是最后一个匹配项匹配、备用星期二...

但是在 JavaScript 中创建变量非常快。相比之下,重复调用版本要求解释器进行多个函数调用,并且函数调用(尽管以任何实际衡量标准都很快)与大多数其他操作相比都很慢。如果解释器能够确定它可以缓存调用的结果,那么速度会如此快的唯一方法是棘手的。

Taking @Felix's performance test and making it pessimistic (例如,最坏的情况,它们都不匹配)表明即使 Chrome 也无法对其进行足够的优化以使重复的函数调用不会变得更糟。我没有做任何全面的测试,但 Chrome、Firefox 和 Opera 的速度都慢了大约 60%。

当然,您还有其他选择:

var text="ABCdef";
switch (text.toLowerCase()) {
  case 'abcdef':
    // ...
    break;
  case 'asdfgh'
    // ...
    break;
  case 'zxcvbn'
    // ...
    break;
}

尽管如此,所有这些都是过早的优化,这通常已经够糟糕了,但对于 JavaScript 及其运行复杂的不同环境尤其糟糕。

更好的问题是:什么更清晰、更易于维护?

关于Javascript toLowerCase() 性能与变量创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706064/

相关文章:

python - 使用 urllib.request 获取股票数据

javascript - 为什么我的文本字段没有添加到页面中?

javascript - 使用 browserify 插件

javascript - 相对位置偏移错误

java - Java从文件中读取大量数据

sql-server - 报表数据库的最佳解决方案

javascript - Internet Explorer 8 和 getElementsByTagName ('script' )无法正常工作

javascript - SAAS 每席位认证

performance - 对于一般的移动 safari 和移动 webkit,使用复杂的 CSS 还是图像更好?

javascript - 节点脚本内存不足(循环内循环)