Разумеется, статический список будет более плавным - гораздо меньше накладных расходов.Если это реальная возможность, пойти с этим.Вы используете список с постраничной загрузкой, когда удержание всего списка в памяти невозможно или когда запрос всего списка из источника данных (особенно удаленного) будет слишком трудоемким / дорогостоящим.
1) Зависит от вашего интерфейса.Фиксированный размер - это размер, который он принимает на экране, а не размер списка.Обычно это справедливо для полноразмерных списков или списков, которые не растут / не уменьшаются с содержимым.
2) DiffUtil и его обратный вызов не имеют ничего общего с подкачкой, они уже существовали в библиотеке подкачки.Они разбирают списки вокруг изменений, чтобы сделать наиболее эффективные вызовы адаптера возможными, вместо того, чтобы делать весь notifyDataSetChanged.Но они занимают некоторое время при этом.Важно, чтобы это было правильно, иначе вы либо пропустите уведомления, либо будете использовать менее эффективные.
3) Ожидается, что он будет медленнее, чем что?Но везде, где вы используете наблюдаемую информацию, вы увидите замедление, потенциально вы публикуете сообщения между потоками.Это одна из причин, по которой они ужасно часто злоупотребляют, люди не понимают, что они на самом деле делают.Да, замедление в 5 раз не кажется маловероятным, особенно если вы в конечном итоге используете менее эффективный метод notifyDataSetChanged, а не более точные уведомления.
4) Когда вы бросаете, вы загружаете намного больше элементов быстрее.Который может вызвать больше удаленных нагрузок.Так что, если у вас возникнут проблемы, это будет, когда вы бросаете.Обычно вы хотите предварительно загрузить отдельный поток достаточно заранее, это не проблема.Вы пробовали играть с размером страницы и расстоянием предварительной выборки?