This is a migrated thread and some comments may be shown as answers.

Do the new Q3 performance improvements affect RadScheduler?

5 Answers 153 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Amir Maharjan
Top achievements
Rank 1
Amir Maharjan asked on 18 Nov 2009, 04:20 PM
My company's product uses RadScheduler for its calendar page, and many of our customers are complaining that it is too slow. I saw the blog post by Tsvetomir Tsonev about the new improvements you made by removing reflection code, and I am wondering how much of an improvement that change will make in RadScheduler. The blog post said it could be 30% in some scenarios - what is the percentage for a plain RadScheduler control with about 30-50 appointments and no other controls on the page?

http://blogs.telerik.com/tsvetomirtsonev/posts/09-10-15/radcontrols_for_asp_net_ajax_-_now_with_more_speed.aspx

Thanks!

5 Answers, 1 is accepted

Sort by
0
Amir Maharjan
Top achievements
Rank 1
answered on 03 Dec 2009, 08:36 PM
Does anyone know?
0
Peter
Telerik team
answered on 04 Dec 2009, 04:00 PM
Hi Amir Maharjan,

We replied in the support ticket, but I will post the answer here for community reference:

It is hard to assess the performance gain because it will depend on the specific scenario that you have. I am not sure if you have tried some of the general performance tips. If not, please see this help topic:
http://www.telerik.com/help/aspnet-ajax/optimizing_output_and_page_load_time_by_using_radscriptmanager_and_radstylesheetmanager.html

Also, you can review the optimization technique used in this demo:
http://demos.telerik.com/aspnet-ajax/scheduler/examples/optimizedqueries/defaultcs.aspx

Using client-side binding (web services) can give you excellent performance in most common cases:
http://demos.telerik.com/aspnet-ajax/scheduler/examples/webservice/defaultcs.aspx




Peter
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
David Espino
Top achievements
Rank 1
answered on 18 Mar 2010, 09:30 PM
Hi:

I'm using a RadScheduler with a custom AdvancedEditTemplate, actually I'm using a UserControl to do this form. My RadScheduler works really fast, I've tried many options to improve performance like trimming my html, taking off comments, the CdnSettings-TelerikCdn enabled for the RadAjax manager, caching images of my custom template, and even caching information loaded by the user control. The user control loads tree "Catalogs" (two of them are CheckListBoxes and another one is a combo) from Scheduler Resources, and comparate them agaisnt Appoinment Resources to do the corresponding matches and load the selected options in catalogs.

My problem: Edit Form takes tooo long to show at screen, after all this improvemens, it takes like 5 to 6 seconds to show in screen and client is reporting this is not an acceptable time. I've been looking for other options to optimize the loading time for this Edit Form, but when I look to your example at:
http://demos.telerik.com/aspnet-ajax/scheduler/examples/optimizedqueries/defaultcs.aspx
the form you are using is loading two tiny catalogs or combos and it still takes 3 to 4 seconds to show. Maybe my client will still say that 3 to 4 seconds is too much, but I would like to know how to reduce the load time for my Custom Edit Form.

Are there any ways to achieve this? or maybe to reduce the load time even to 1 or 2 seconds?

This is the Javascript to Edit Template:
function schedulerFormCreated(scheduler, eventArgs) {  
                // Create a client-side object only for the advanced templates  
                var mode = eventArgs.get_mode();  
                if (mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert ||  
                    mode == Telerik.Web.UI.SchedulerFormMode.AdvancedEdit) {  
                    // Initialize the client-side object for the advanced form  
                    var formElement = eventArgs.get_formElement();    
                    var templateKey = scheduler.get_id() + "_" + mode;  
                    var advancedTemplate = schedulerTemplates[templateKey];  
                    if (!advancedTemplate)  
                    {  
                        // Initialize the template for this RadScheduler instance  
                        // and cache it in the schedulerTemplates dictionary  
                        var schedulerElement = scheduler.get_element();  
                        var isModal = scheduler.get_advancedFormSettings().modal;  
                        advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement, isModal);  
                        advancedTemplate.initialize();  
 
                        schedulerTemplates[templateKey] = advancedTemplate;  
 
                        // Remove the template object from the dictionary on dispose.  
                        scheduler.add_disposing(function() {  
                            schedulerTemplates[templateKey] = null;  
                        });  
                    }  
 
                    // Are we using Web Service data binding?  
                    if (!scheduler.get_webServiceSettings().get_isEmpty()) {  
                        // Populate the form with the appointment data  
                        var apt = eventArgs.get_appointment();  
                        var isInsert = mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert;  
                        var editSeries = eventArgs.get_editingRecurringSeries();  
                        advancedTemplate.populate(apt, isInsert, editSeries);  
                    }  
                }  
            } 

And the markup of my scheduler

<telerik:RadScheduler runat="server" ID="RadScheduler1" Width="650px" SelectedView="DayView"  Height="650px" 
                EnableEmbeddedSkins="false" Skin="IARScheduler" 
                TimeZoneOffset="00:00:00" DayStartTime="00:00:00" DayEndTime="23:59:59" 
                ProviderName="IarDataProvider" ReadOnly="false" StartInsertingInAdvancedForm="true"   
                EnableDescriptionField="true" OnAppointmentCreated="RadScheduler1_AppointmentCreated"   
                OnClientFormCreated="schedulerFormCreated"    
                Localization-Show24Hours="" Localization-ShowBusinessHours="" 
                CustomAttributeNames="Location,Reminder,SendNotification,RecurrenceRuleFriendlyText"   
                OnAppointmentDelete="RadScheduler1_AppointmentDeleted" OnOccurrenceDelete="RadScheduler1_OccurrenceDelete">  
                <AdvancedForm Modal="true"  />                              
                <AppointmentTemplate>                     
                       <div style="font-size:smaller"><asp:Label runat="server" ID="RecurrenceIcon" /><b><%# Eval("Subject") %></b></div>                         
                       <div style="font-size:smaller">At <%# Eval("Location") %></div>  
                       <div style="font-style:italic; font-size:smaller;"> Description: &nbsp;<%# Eval("Description") %></div>                                                    
                </AppointmentTemplate> 
                <AdvancedEditTemplate> 
                    <scheduler:AdvancedForm runat="server" ID="AdvancedEditForm1" Mode="Edit" 
                        Subject='<%# Bind("Subject") %>' 
                        Description='<%# Bind("Description") %>'   
                        Start='<%# Bind("Start") %>' 
                        End='<%# Bind("End") %>' 
                        RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' 
                        Location='<%# Bind("Location") %>'                        
                        Reminder='<%# Bind("Reminder") %>' 
                        ReminderRecurrence='<%# Bind("ReminderRecurrence") %>' 
                        MemberID='<%# Bind("Members") %>' 
                        GroupID='<%# Bind("Groups") %>' 
                        SendNotification='<%# Bind("SendNotification") %>' 
                        RecurrenceRuleFriendlyText =<%#Bind("RecurrenceRuleFriendlyText") %> 
                         /> 
                </AdvancedEditTemplate> 
                <AdvancedInsertTemplate> 
                    <scheduler:AdvancedForm runat="server" ID="AdvancedInsertForm1" Mode="Insert"   
                        Subject='<%# Bind("Subject") %>' 
                        Start='<%# Bind("Start") %>' 
                        End='<%# Bind("End") %>' 
                        Description='<%# Bind("Description") %>' 
                        RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' 
                        Location='<%# Bind("Location") %>' 
                        Reminder='<%# Bind("Reminder") %>' 
                        ReminderRecurrence='<%# Bind("ReminderRecurrence") %>' 
                        MemberID='<%# Bind("Members") %>' 
                        GroupID='<%# Bind("Groups") %>'       
                        SendNotification='<%# Bind("SendNotification") %>'         
                        RecurrenceRuleFriendlyText =<%#Bind("RecurrenceRuleFriendlyText") %>     
                         /> 
                </AdvancedInsertTemplate> 
                <TimelineView UserSelectable="false" /> 
                <TimeSlotContextMenuSettings EnableDefault="true" EnableEmbeddedSkins="true" Skin="Default" /> 
                <AppointmentContextMenuSettings EnableDefault="true" EnableEmbeddedSkins="true" Skin="Default" /> 
            </telerik:RadScheduler> 



Thanks a lot
0
ephillipe
Top achievements
Rank 2
answered on 23 Mar 2010, 07:53 PM
I have the same problem. :(
0
Peter
Telerik team
answered on 24 Mar 2010, 10:08 AM
Hi guys,

Thank you for  your feedback. I will log this issue and we will do our best to reduce the time for opening the modal advanced form for the next release. In the meantime, you can gain performance improvement by setting <AdvancedForm Modal="false" />.


Best wishes,
Peter
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Tags
Scheduler
Asked by
Amir Maharjan
Top achievements
Rank 1
Answers by
Amir Maharjan
Top achievements
Rank 1
Peter
Telerik team
David Espino
Top achievements
Rank 1
ephillipe
Top achievements
Rank 2
Share this question
or