Ну я хоть не сеньёрь и даже не мидл, но подход у вас совершенно не правильный.
Как уже упомянул
Александр Аксентьев рендерить нужно только видимые ячейки, но на 50000 только этого будет недостаточно.
Вам нужно организовать пулл dom элементов (генерим сразу максимальное число ячкеек которое влезает в экран и сразу вставляем их в dom). После только менять x,y позиции ячеек при прокрутке и сами текстовые данные внутри них.
То есть при прокручивании таблицы, вынимаем уже созданные ячейки из пула и расставляем их по необходимым координатам в строке, которая сейчас попадает в видимую область экрана.
Задача сильно упрощается, если размер ячеек фиксированный.
Я использую шаблонизатор lodash
На 50000 любая либа даст тормоза. Обрабатываем только ручками. В вашем случае не до удобства.