TableView не создаст 5000 строк графики, если область просмотра имеет высоту всего 20 строк. Вероятно, он будет иметь только около 25 строк, что достаточно для предварительной загрузки нескольких строк за пределы экрана для повышения производительности. Строки таблицы экрана перерабатываются с новыми данными модели таблицы при прокрутке вверх и вниз. Так что идея о том, что вы можете каким-то образом «улучшить производительность», немного неуместна для начала.
Основная проблема с отложенной загрузкой заключается в том, что она не очень совместима со многими элементами TableView. Например, что должно произойти, когда пользователь щелкает заголовок столбца для сортировки? Насколько большим должен быть курсор прокрутки? Что произойдет, если пользователь перетаскивает курсор прокрутки вниз?
5000 предметов не кажутся мне такими большими. Ваша табличная модель должна иметь только данные, необходимые для отображения строки, которая в большинстве случаев сводится к нескольким свойствам строк и чисел. Поэтому, если ваша таблица не имеет ширины в сотни столбцов, вся ваша таблица должна быть разумного размера. 200 байт на строку - это всего 1 МБ для всей модели таблицы.