Идеи по улучшению доступа к элементам массива и повышению производительности веб-приложений


Маленькие вещи имеют значение, когда речь идет о производительности веб-приложения.

Давайте рассмотрим очень интуитивную проблему, в которой нам интересно, как веб-разработчики получат доступ к последнему элементу из массива элементов, который содержит ~1 миллион элементов.

Очевидные мысли — использовать методы массива slice, pop или через доступ к индексу, или многими другими способами, описанными ниже:-

let data = […] => ~миллионы элементов.

let last = data.slice(-1)[0]
Вход в полноэкранный режим Выход из полноэкранного режима
let last = data[data.length - 1]
Войти в полноэкранный режим Выход из полноэкранного режима
let last = [...data].pop()
Войти в полноэкранный режим Выход из полноэкранного режима
let last = data.reduceRight(x => x)
Войти в полноэкранный режим Выход из полноэкранного режима
let last = data.at(-1)
Войти в полноэкранный режим Выйти из полноэкранного режима

или с помощью внешних библиотек, таких как lodash и любые методы jQuery.

Проведя несколько тестов на этих наборах инструкций для массива из миллионов элементов, мы получили эталон производительности!

Выводы — рекомендуется использовать

let last = data[data.length - 1]
Войти в полноэкранный режим Выход из полноэкранного режима

который является самым быстрым кроссбраузерным решением из всех возможных.
После этого моим личным выбором будет использование

let last = data.at(-1)
Войти в полноэкранный режим Выход из полноэкранного режима

и

let last = [...data].pop()
Войти в полноэкранный режим Выход из полноэкранного режима

Хотя […data].pop() занимает дополнительное пространство O(N) и время для создания неглубокой копии массива больших данных, но это быстрее.
Решения, использующие jQuery, являются самыми медленными во всех браузерах.
Спасибо StackOverflow и Kamil Kiełczewski.

Оцените статью
devanswers.ru
Добавить комментарий