392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
|
1 | |
Скорость выполнения метода массивов sort15.11.2018, 00:03. Показов 3979. Ответов 5
Метки нет (Все метки)
Является ли оригинальный метод sort самым быстрым или же есть алгоритмы быстрее используемого в методе? Кто-то пробовал? Экспериментировал? Проводил замеры?
0
|
15.11.2018, 00:03 | |
Ответы с готовыми решениями:
5
Скорость выполнения Скорость выполнения функций Скорость выполнения скрипта Ограничить скорость выполнения цикла |
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
15.11.2018, 00:29 | 2 |
если довериться Кантору (чего я никому не советую), то разработчики всех браузеров использовали алгоритм "быстрой сортировки"
0
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
|
15.11.2018, 01:21 [ТС] | 3 |
kalabuni, Проверил в хроме: взял массив на 100 тысяч элементов, заполнил его рэндомными значениями, скопировал значения в другой. Первый отсортировал sort-ом второй кодом по алгоритму qsort, разница почти в два раза в пользу второго. 330 ms на 190 ms
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
15.11.2018, 02:30 | 4 |
а вот это вы зря, в нормальных условиях метод sort () используют для массивов значительно меньшей длины (несколько десятков, максимум сотня элементов)
вполне возможно, что в браузерах алгоритм каким-то образом оптимизирован именно под небольшие массивы так что для чистоты повторите свой эксперимент, сортируя небольшой массив в 100 элементов тысячу раз
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
15.11.2018, 04:37 | 5 |
kalabuni, renat_dmitriev, приветствую.
Firefox - сортировка слиянием V8 - сортировка вставками для малых массивов и быстрая для больших Webkit - для числовых использует быструю, для смежных слиянием Пруфик для вебкит - https://trac.webkit.org/browse... rev=138530 Пруф - для SpiderMonkey - https://dxr.mozilla.org/mozill... /Array.cpp Для V8 - https://chromium.googlesource.... e-array.cc https://github.com/v8/v8/blob/... e-array.cc
1
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
||||||
15.11.2018, 11:13 [ТС] | 6 | |||||
На массивах значительно меньшей длины разница вообще будет неощутима. Даже если мы массивы по 100 элементов сортируем 1000 раз, то время этого процесса будет в десятки раз короче, чем единственная сортировка на 100 000 элементов и даже на слабых компьютерах вряд ли будет превышать 100 мс, соответственно разница между различными алгоритмами сортировки 100 элементов 1000 раз будет совсем мизерная, но интереса ради да, попробую. Спасибо за совет.
Добавлено через 38 минут Проверил: на маленьких разница еще ощутимее в процентном отношении. Вчерашний свой код я увы потерял, сегодня переписал, работает почему-то несколько дольше, но все равно очевидно быстрее существующего. Код теста:
PS Оказывается это только с хромом такие результаты. Опера и Мозилла дают лучшие результаты. Опера чуть хуже на большом массиве, но в два раза быстрее на маленьких. Мозилла в разы быстрее на большом, и аналогичное время на маленьком.
0
|
15.11.2018, 11:13 | |
15.11.2018, 11:13 | |
Помогаю со студенческими работами здесь
6
Оценить скорость (время) выполнения метода Странное поведение метода Sort() Использовать метод transform() вместо метода sort() Неправильная сортировка при использовании метода .sort Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |