Currently all records are loaded into the calendar report. I have reached about 800 records and it takes a really long time for the calendar report to load.
I am requesting you consider to implement pagination and allow only the records that are selected from a date picker start and end, and with the current month plus one week prior month and one week next month as default.
Please note that the Calendar Report does not obviously support pagination, since its characteristic is completely different with data in Table in List Page. When you display data in the Calendar Report, then all the data in current calendar will be displayed.
However, you may actually use Page_Selecting server event that belongs to the Calendar Report in order to filter records based on your own business-logic.