The processing time is likely the time to transfer the data from the server. Data for all invoices is transferred in a minimized json file in the
public/data.json file. The client (your browser) is set to display data after rendering the 15 rows on the first screen (this is the deferRender option in the Datatables module). Bottom line, the current logic is as efficient as per my understanding, as it can be.
If you have additional thoughts, please let me know.