只是想知道,我在这个问题上看到了不同的意见。
如果你取一个字符串数组,比如 1000 个元素并使用 sort 方法。哪个会更快?一个字符串长度为 100 个字符的数组,还是一个字符串长度只有 3 个字符的数组?
我尝试测试,但目前 Firebug 有一个错误,并且 Date() 显得过于随机。
谢谢!
只是想知道,我在这个问题上看到了不同的意见。
如果你取一个字符串数组,比如 1000 个元素并使用 sort 方法。哪个会更快?一个字符串长度为 100 个字符的数组,还是一个字符串长度只有 3 个字符的数组?
我尝试测试,但目前 Firebug 有一个错误,并且 Date() 显得过于随机。
谢谢!
这取决于字符串包含的内容,如果它们包含不同的字符,则不必检查字符串的其余部分进行比较,所以没关系。
例如,"abc" < "bca"
这里只需要检查第一个字符。
您可以阅读此规范:http ://ecma-international.org/ecma-262/5.1/#sec-11.8.5
具体来说:
否则,px和py都是字符串
- 如果py是px的前缀,则返回false。(如果q可以是连接p和其他字符串r的结果,则字符串值p是字符串值 q的前缀。请注意,任何字符串都是其自身的前缀,因为r可能是空字符串。)
- 如果px是py的前缀,则返回true。
- 令k为最小的非负整数,使得px中位置k处的字符与py中位置k处的字符不同。(必须有这样的k,因为 String 都不是另一个的前缀。)
- 令m为整数,它是px中位置k处 字符的代码单元值。
- 令n为整数,它是py中位置k处 的字符的代码单元值。
- 如果m < n,则返回true。否则,返回false。
这实际上取决于字符串的不同程度,但我想差异会很小,因为进行比较的方法比实际比较字符串要慢得多。
但是话又说回来,现代浏览器使用了一些特殊的优化sort
,所以他们减少了一些比较来加快速度。这会更频繁地对一组短字符串进行排序。
仅供参考,如果您想进行一些基准测试,请使用可靠的工具,例如jsPerf。