In TouchCalendarEventsBase.js, sort is called on eventStore repeatedly, for every date. In my test, moving sort() to before dates.each() reduced the time to display a new month in month view from 3 secs to 0.5 secs (with 300 event records, Chrome desktop browser).
dates.each(function(dateObj){
var currentDate = dateObj.get('date'),
currentDateTime = currentDate.getTime(),
takenDatePositions = []; // stores 'row positions' that are taken on current date
// sort the Events Store so we have a consistent ordering to ensure no overlaps
eventStore.sort(this.getPlugin().getStartEventField(), this.getEventSortDirection());
In TouchCalendarEventsBase.js, sort is called on eventStore repeatedly, for every date. In my test, moving sort() to before dates.each() reduced the time to display a new month in month view from 3 secs to 0.5 secs (with 300 event records, Chrome desktop browser).