Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组排序速度受字符串长度影响?_Javascript_Sorting - Fatal编程技术网

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

Javascript数组排序速度受字符串长度影响?,javascript,sorting,Javascript,Sorting,我只是想知道,我在这个问题上看到了不同的意见 如果您获取一个字符串数组,比如1000个元素并使用sort方法。哪一个更快?字符串长度为100个字符的数组,还是字符串长度仅为3个字符的数组 我试图进行测试,但目前Firebug有一个bug,Date()看起来太随机了 谢谢大家! 这取决于字符串包含的内容,如果它们包含不同的字符,则不必检查字符串的其余部分以进行比较,因此这无关紧要 例如,“abc”

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

如果您获取一个字符串数组,比如1000个元素并使用sort方法。哪一个更快?字符串长度为100个字符的数组,还是字符串长度仅为3个字符的数组

我试图进行测试,但目前Firebug有一个bug,Date()看起来太随机了


谢谢大家!

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

例如,
“abc”
这里只需检查第一个字符

您可以阅读以下各项的规格:

具体而言:

否则,px和py都是字符串

  • 如果py是px的前缀,则返回false。(字符串值p是字符串值的前缀 如果q可以是p和其他字符串r连接的结果 字符串本身是前缀,因为r可能是空字符串。)
  • 如果px是py的前缀,则返回true
  • 设k为最小的非负整数,使得px内k位置的字符为 与py中位置k处的字符不同。(必须有这样一个k,因为两者都不是 字符串是另一个的前缀。)
  • 设m为整数,该整数是内位置k处字符的代码单位值 px
  • 设n为整数,该整数是内位置k处字符的代码单位值 皮耶
  • 如果mtrue。否则,返回false

  • 这实际上取决于字符串的不同程度,但我想差异是最小的,因为执行比较的调用要比实际比较字符串慢得多

    但是,现代浏览器对排序使用了一些特殊的优化,所以他们减少了一些比较以加快速度。这种情况更常见于对短字符串数组进行排序


    仅供参考,如果您想进行一些基准测试,请使用可靠的工具,如。

    我不认为100个字符的字符串可能比3个字符的字符串快。在看起来随机性较低的日期之后,获取毫秒。。。最长的字符串更快?这似乎有点违反直觉。我确实同意你的观点,但我仍然想知道,如果能证明在复制数组中剪切字符串所需的时间是合理的,那么收益会有多大。它们基本上是一样的。不要费心去截断字符串,除非你有很多相同的字符串。谢谢minitech!!你是对的,大多数情况下,100看起来要么相等,要么更快。不,sort()]没有使用抽象比较算法,但其余答案是正确的,所以+1@Bergi规范说明自定义排序函数是在那里定义的实现。因此,如果您使用
    .sort()
    而不传递回调函数,那么将使用实现定义的函数?@Bergi实际上它说的是
    如果xStringyString,则返回1。
    (在
    compareFn
    未定义的情况下)。但我不是很确定,我只是假设它是通过字符串来实现的PNo,它总是使用“SortCompare抽象操作”-当没有给出自定义函数时,它将应用于两个值上的字符串并对它们进行比较-是的,这将(我猜)按字典顺序排列,如11.8.5:-)@Bergi是的,我假设没有自定义函数传递给
    .sort()
    :p差异很大:嗯,你故意制造了一个非常糟糕的案子。当事情变得更随机时,结果就更相似了:你所说的“削减一些比较”是什么意思?@MaxArt我确实创造了某种最坏的情况,因为我认为这就是你所说的。@Bergi我的意思是这样的: