KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have made a little test, and found out that array.sort(function(a, b) { return a - b; }); is a lot faster than array.sort(); in JavaScript. The results were quite shocking, about 1.7 times faster in IE9, 1.6 times in FF7 and 6.7 times in Chrome. Also, by implementing quicksort by myself in JS, I found it was even faster than both methods mentioned above. (Two different implementations, one accepts a comparer function as a parameter, the other doesn't. Both were faster.) Is there any reasonable explanation? EDIT: My implementations: No comparer: function quickSort(array, from, to) { if(typeof from === 'undefined') { from = 0; to = array.length - 1; } else if(typeof to === 'undefined') { to = array.length - 1; } if(to - from < 1) { return; } var i = from, pivot = to, t; while(i < pivot) { if(array[i] > array[pivot]) { t = array[i]; array[i] = array[pivot - 1]; array[pivot - 1] = array[pivot]; array[pivot] = t; pivot--; } else { i++; } } quickSort(array, from, pivot - 1); quickSort(array, pivot + 1, to); } With comparer: function quickSortFunc(array, sortfunc, from, to) { if(typeof from === 'undefined') { from = 0; to = array.length - 1; } else if(typeof to === 'undefined') { to = array.length - 1; } if(to - from < 1) { return; } var i = from, pivot = to, t; while(i < pivot) { if(sortfunc(array[i], array[pivot]) > 0) { t = array[i]; array[i] = array[pivot - 1]; array[pivot - 1] = array[pivot]; array[pivot] = t; pivot--; } else { i++; } } quickSortFunc(array, sortfunc, from, p
Tags (comma-separated)
Save Edits
Cancel