Open mblackritter opened 5 years ago
When you say you're having performance problems during rendering - do you mean the initial calendar render? Or are you talking about whenever something changes and it has to re-render?
I did some measuring during event dragging and a few other things and the majority of the time is spent in Vue's reactivity code and updating the DOM.
@ClickerMonkey, yes, these profilings are from initial renders.
Beside Safari (which shows the number of samples it was able to catch for each event), I also tested with Firefox and Chrome, and the time it takes to render the views (You can just "feel" it most notably for "Year") are within the same span.
I just mentioned #75, because I assume it's also affected by the sheer amount of event calls.
Came across this thread as I just implemented this calendar and finally loaded a modest 200 calendar events and the time to render month to month is 6-7 seconds on my extremely fast MacBook Pro. Upping that to 400 causes a 11-12 second delay in the Month view. If I go to 4 day view, then it is pretty fast with on 20-30 events needing to render. So there is a direct correlation between events to be displayed and time to render. Other thing I notices was all the popovers are placed in the DOM and hidden. Could this be causing performance issues?
Yes - that could be a problem - a few other things could contribute to that as well.
Vuetify 1.5.0 has a v-calendar component that I will be migrating this library to use - and some performance issues will be improved.
Vuetify 2.0.0 will have the event support
While testing various VUE based calendars, I found Dayspan to be the most complete and flexible so far, but noticed that it suffers heavy performance hits on view rendering. While profiling the execution, I found ~300 message and click events called on daily views and ~3000 message and click events called on monthly views, which cause the performance hits and would seem to be unnecessary, especially the click events.
This also seems to be related to #75 (Significant delay when dragging), where the impact also grows with the displayed range.
The question is of course, why do these get triggered? Maybe someone with deeper insights to VUE, Vuetify and Dayspan can make more sense out of this. Might be a solution would be as simple as disabling events until the view is rendered, but I'm not familiar with VUE internals so far.
Daily View
Weekly View
Monthly View