Identifying Slow Functions
Performance Trace
A lot of page rendering in C1 CMS is encapsulated in CMS Functions.
C1 CMS allows you to track how much time each CMS Function takes to execute when a page loads.
To view this performance trace:
- Log in to the CMS Console of your website.
- Select a page you want to trace.
- Click the View Mode button (the first button to the right of the address bar).
- Select CMS Page Speed.
Alternatively:
- While logged in to the CMS Console, in the address bar of your web browser, type in the URL of the page whose performance report you want to see.
- Append the c1mode query parameter set to perf to the page URL ('
?c1mode=perf'). For example:http://www.contoso.com/Products?c1mode=perf - Press Enter.
Important: Make sure that you are logged in before running the performance report.
The activities and functions are presented nested in a table. You can expand and collapse them in the table at will.
- The first column ("Own time") shows how many milliseconds the activity or function takes to execute without its child activities/functions.
- The second column ("Function calls") features the name for the activity or function and shows how long (in both ms and %) it takes to complete the activity or execute the function.
- The third column ("Memory usage") shows the memory usage in kilobytes.
Tracking custom code performance
If you also have custom C# code executed when a page loads, you can add performance tree labels and times for it to the report, too. Use this code:
using (Composite.Core.Instrumentation.Profiler.Measure("My Custom Label"))
{
// your code here – the time used in here is measured
// and labeled with your custom label defined above
}When a "Measure" block is encountered, a new nested node in the performance tree is created. Nesting "Measure" blocks creates nested performance tree elements.
Sample:
using System;
namespace Demo
{
public class Functions
{
public static string ShowDate()
{
using(Composite.Core.Instrumentation.Profiler.Measure("Show Long Date"))
{
return DateTime.Now.ToLongDateString();
}
}
}
}

