Комментарии 15
Позанудствую: график не слишком понятен, даже оси не подписаны. Какие такие obj(1), map(1) и иже с ними...
... оформлен не по ГОСТ 2.319-81... ))
Ну окей, а причина? копали глубже? А то может это просто особенность реализации Map в nodejs указанной версии. С другой версией пробовали?
читаться много чаще, чем писаться
мы не будем туда ничего добавлять
Какой-то странный кейс. В какой задаче вам понадобится именно итерировать кэш? Чаще всего из кэша читают, редко когда его нужно целиком прогонять.
Он здесь не прогоняется целиком и не итерируется, мы просто эмулируем миллион случайных обращений.
А кейс очень простой - при старте приложения вы можете поднимать некий заранее предрассчитанный кэш, который покрывает 99.9% обращений, а потом только обращаться к нему, не пытаясь его изменить. Вполне очевидно, что попытка добавления этих 0.1% разнообразных значений может со временем непотребно раздуть его.
Создание кеша на миллион записей:

Миллион успешных обращений к кешу:

кэш у нас будет "стабильным" — то есть мы не будем туда ничего ни добавлять, ни удалять;
Именно здесь и порылась собака: Map рассчитана выдерживать добавления/удаления ключей. А Object отлично подходит для статических данных, но будет деградировать на обновляемых (особенно с удалениями).
Кэш в JavaScript: не все Map'ы одинаково полезны