Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Сравнение производительности методов сортировки массивов объектов. (Denis Usenko)
Author Message
Denis Usenko
Участник форума



Joined: 06 Feb 2006
Posts: 54
Карма: 13
   поощрить/наказать


PostPosted: Mon Sep 15, 2008 11:30 pm (написано за 12 минут 6 секунд)
   Post subject: Сравнение производительности методов сортировки массивов объектов.
Reply with quote

Частая проблема сортироки с коллбэком -- медленная работа в msiях.
Когда-то давно Russel Lindsay предложил временно (на время сортировки) перекрывать методы toString объектов, а поскольку в ие приведение объектов к строке происходит до начала сортировки, то и работает метод на ура. Правда только в ИЕ, остальные браузеры выполнят n log n преобразований (вызовов нашего toString). Затем скрипт был улучшен Kostik'ом Naumov'ым (www.piterpen.net), ну и я немного повозился с этой методой )) В аттаче скрипт бенчмарка таких сортировок, можете написать свой вариант и затестить. Также, в архиве, описание (от дядьки Дж. Бентли) алгоритма хипсорт, это еще один хороший способ сортировать быстро в любых браузерах.


sort - benchmark test(2008-09-16).rar
 Description:

Download
 Filename:  sort - benchmark test(2008-09-16).rar
 Filesize:  36.35 KB
 Downloaded:  415 Time(s)

Back to top
View user's profile Send private message
Denis Usenko
Участник форума



Joined: 06 Feb 2006
Posts: 54
Карма: 13
   поощрить/наказать


PostPosted: Tue Jul 07, 2009 9:55 am (спустя 9 месяцев 21 день 10 часов 25 минут; написано за 5 минут 5 секунд)
   Post subject:
Reply with quote

Поставил сегдня FF 3.5, лиса порадовала хорошей производительностью, сортировка в ней теперь быстрее чем в опере. Но интересно другое, если раньше самой быстрой была нативная с колбеком, то теперь некоторые самописные варианты быстрее.
Вот результат сортировки массива в 15000 элементов:
Code (any language): скопировать код в буфер обмена
array.sort(function (a, b) { return a.someProperty - b.someProperty; })
time: 167

array.sortCool10a(someProperty)
time: 118

array.sortCool10b(someProperty)
time: 113

array.sortHook36(someProperty)
time: 65

array.sortHook10(someProperty)
time: 46

array.sortIr(someProperty)
time: 106

array.heapSortByProp(someProperty)
time: 124
Впрочем удивляться нечему: самой быстрой сортировкой с колбеком раньше была сортировка в хроме, а ведь ее реализация написана на самой javascript )) Если вдруг кто захочет поэксперементировать с ее кодом:
Code (html): скопировать код в буфер обмена
<pre> (december.com/html/4/element/pre.html)<script> (december.com/html/4/element/script.html)document.write([].sort)</script></pre>
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML