Javascript数组排序速度受字符串长度影响?

时间:2012-07-11 20:28:11

标签: javascript sorting

只是想知道,我在这个问题上看到了不同意见。

如果你取一个字符串数组,说1000个元素并使用sort方法。哪一个会更快?字符串长度为100个字符的数组或字符串长度仅为3个字符的数组?

我试过测试但是我现在有一个Firebug的错误,而Date()似乎太随机了。

谢谢!

2 个答案:

答案 0 :(得分:1)

它取决于字符串包含的内容,如果它们包含不同的字符,则不必检查字符串的其余部分以进行比较,因此无关紧要。

例如,"abc" < "bca"此处只需要检查第一个字符。

您可以阅读以下内容:http://ecma-international.org/ecma-262/5.1/#sec-11.8.5

具体做法是:

  

否则, px py 都是字符串

     
      
  1. 如果 py px 的前缀,请返回 false 。 (字符串值 p 是String值的前缀                q 如果 q 可以是连接 p 和其他一些String r 的结果。请注意任何               String是其自身的前缀,因为 r 可能是空字符串。)
  2.   
  3. 如果 px py 的前缀,请返回 true
  4.   
  5. k 成为最小的非负整数,使 px 中位置 k 的字符为               与 py k 位置的字符不同。 (两者都必须有这样的 k               String是另一个的前缀。)
  6.   
  7. m 为整数,它是位于 k 位置的字符的代码单位值                PX
  8.   
  9. n 是整数,它是位于 k 位置的字符的代码单位值               吡啶
  10.   
  11. 如果 m &lt; n ,返回 true 。否则,请返回 false
  12.   

答案 1 :(得分:1)

这实际上取决于字符串的不同程度,但我猜这些差异会很小,因为所谓的比较要比实际比较字符串慢。

但话说回来,现代浏览器对sort使用了一些特殊的优化,因此他们削减了一些比较以加快速度。这种情况会更频繁地对一串短字符串进行排序。

而且仅供参考,如果您想制作一些基准测试,请使用像jsPerf这样的可靠工具。