У меня был случай на работе. В одном крупном проекте. Были экраны со списком и поиском по нему. Это было универсальным модулем реализовано. И вот я его в свой фиче переиспользую. В списке 4к элементов. Поиск дико лагает. То есть по полному списку там больше секунды фриз. Я такой, первым же делом думаю что сам процес поиска подстроки не оптимальный. Но потом делаю замеры, оказывается обновление таблицы делается со скоростью черепахи. Нахожу кусок кода. Там наверное около 100 строк, оптимального обновления. Типо лиф и обновление конкретных ячеек. Я это удалил, поставил reloadData и все начало летать. Просто за один фрейм и на большем дата сете.