Javascript数组排序速度受字符串长度影响?
我只是想知道,我在这个问题上看到了不同的意见 如果您获取一个字符串数组,比如1000个元素并使用sort方法。哪一个更快?字符串长度为100个字符的数组,还是字符串长度仅为3个字符的数组 我试图进行测试,但目前Firebug有一个bug,Date()看起来太随机了Javascript数组排序速度受字符串长度影响?,javascript,sorting,Javascript,Sorting,我只是想知道,我在这个问题上看到了不同的意见 如果您获取一个字符串数组,比如1000个元素并使用sort方法。哪一个更快?字符串长度为100个字符的数组,还是字符串长度仅为3个字符的数组 我试图进行测试,但目前Firebug有一个bug,Date()看起来太随机了 谢谢大家! 这取决于字符串包含的内容,如果它们包含不同的字符,则不必检查字符串的其余部分以进行比较,因此这无关紧要 例如,“abc”
谢谢大家! 这取决于字符串包含的内容,如果它们包含不同的字符,则不必检查字符串的其余部分以进行比较,因此这无关紧要 例如,
“abc”
这里只需检查第一个字符
您可以阅读以下各项的规格:
具体而言:
否则,px和py都是字符串
这实际上取决于字符串的不同程度,但我想差异是最小的,因为执行比较的调用要比实际比较字符串慢得多 但是,现代浏览器对排序使用了一些特殊的优化,所以他们减少了一些比较以加快速度。这种情况更常见于对短字符串数组进行排序
仅供参考,如果您想进行一些基准测试,请使用可靠的工具,如。我不认为100个字符的字符串可能比3个字符的字符串快。在看起来随机性较低的日期之后,获取毫秒。。。最长的字符串更快?这似乎有点违反直觉。我确实同意你的观点,但我仍然想知道,如果能证明在复制数组中剪切字符串所需的时间是合理的,那么收益会有多大。它们基本上是一样的。不要费心去截断字符串,除非你有很多相同的字符串。谢谢minitech!!你是对的,大多数情况下,100看起来要么相等,要么更快。不,sort()]没有使用抽象比较算法,但其余答案是正确的,所以+1@Bergi规范说明自定义排序函数是在那里定义的实现。因此,如果您使用
.sort()
而不传递回调函数,那么将使用实现定义的函数?@Bergi实际上它说的是如果xStringyString,则返回1。
(在compareFn
为未定义的情况下)。但我不是很确定,我只是假设它是通过字符串来实现的PNo,它总是使用“SortCompare抽象操作”-当没有给出自定义函数时,它将应用于两个值上的字符串并对它们进行比较-是的,这将(我猜)按字典顺序排列,如11.8.5:-)@Bergi是的,我假设没有自定义函数传递给.sort()
:p差异很大:嗯,你故意制造了一个非常糟糕的案子。当事情变得更随机时,结果就更相似了:你所说的“削减一些比较”是什么意思?@MaxArt我确实创造了某种最坏的情况,因为我认为这就是你所说的。@Bergi我的意思是这样的: