为什么本机浏览器排序功能比quicksort慢?

时间:2013-12-18 04:15:04

标签: javascript performance sorting quicksort

我实施了快速排序,发现它比原始.sort()方法工作得更快,here is the Performance test

为什么以及如何发生这种情况?

2 个答案:

答案 0 :(得分:2)

原因是即使.sort()方法是原生的,它也比快速排序更通用。

sort方法采用比较功能。虽然在快速排序的情况下,这种比较已经受到限制。

本机sort()方法较慢,无法考虑更多非常规比较函数。

另外值得注意的是:您应该阅读有关underscore.js与lowdash的内容。

Lowdash充满了使用for循环而不是本机函数来提高速度的方法。

更新: 我阅读下面的评论并意识到我的错误。经过一番挖掘后,我发现原生性能较慢的真正原因。本机代码显然使用较低级别的语言,例如C,它比javascript更“安全”。

本机函数有许多检查以确保没有错误且事情不会中断。 Javascript代码不需要像Javascript一样多的检查,因为语言可以避免许多此类错误。

答案仍然不太令人信服,但是。与Array.forEach相比,lowdash中的每一个也有类似的结果,低破折号实现更快。这是因为低破折号实现会跳过if(... in ....)检查。像这样的小差异可以帮助javascript变得更快,因为这些天Javascript的编译方式。所有功能在运行之前基本上都转为本机代码。所以原生优势很小。

答案 1 :(得分:0)

你确定原生函数实现快速排序而不是稳定排序吗?

好的读物:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort