The virtual scrollview allows you to load data page by page. Please take a look at this statement:
$result = $this->m_items->join_all();
You retrieve all the rows but you just need to return the current page rows. Please modify your php script to get better performance.