Проблема: «…поиск непригоден для огромных аккаунтов…»

«Только что попробовал поискать и ничего не смог с этим поделать — убивает браузер. Я думаю, нам следует добавить к нему некоторую защиту от дребезга (если она еще не добавлена) и подойти к поиску более разумно, DOM, вероятно, слишком тяжел для этого, его можно даже фильтровать с помощью ajax».

первый комментарий: «Ember UI кто-нибудь?»

За считанные секунды мы пришли к тому, чтобы что-то переписать, хотя у нас есть на это и другие причины. Классический. ;)

Но что на самом деле занимает так много времени?
Поскольку мы говорим о поиске на стороне клиента, мы обращаемся к профилировщику Chrome.

Инструменты/профили разработчика

Загрузить страницу, начать запись, найти, остановить запись, результаты:

Давайте не будем слишком увлекаться цифрами: 39 секунд, CSS. Это подсказка. Источник был достаточно простым, чтобы быстро найти это:

showElements: (elements) ->
  @list.find(elements).parents(@listElement).slideDown()

hideElements: (elements) ->
  @list.find(elements).parents(@listElement).slideUp()

Что, если мы просто…

showElements: (elements) ->
  @list.find(elements).parents(@listElement).show()

hideElements: (elements) ->
  @list.find(elements).parents(@listElement).hide()

Измерение…

Вуаля!