Hi,
I'm tracking down some bottlenecks in our product using JetBrains dotTrace product and have found that the RadEditor is taking about 5 seconds to render on the server.
We're using RadEditor.NET2.dll version 7.2.1.0.
Below is some profiling data that I collected. The format is:
<percentage of time> <method name> - <total time> - <total calls> <fully qualified method name>
Every time a method calls another method, that method is shown below the caller and indented by two spaces. The result is a tree of method calls.
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - Telerik.Web.UI.RadEditor.RegisterScriptDescriptors()
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - System.Web.UI.ScriptManager.RegisterScriptDescriptors(IScriptControl)
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - System.Web.UI.ScriptControlManager.RegisterScriptDescriptors(IScriptControl)
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.RadWebControl.GetScriptDescriptors() (from System.Web.UI.IScriptControl)
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.RadEditor.GetScriptDescriptors()
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.ScriptRegistrar.GetScriptDescriptors(WebControl)
31.94 % DescribeComponent - 18607 ms - 4 calls - Telerik.Web.UI.RadWebControl.DescribeComponent(ScriptComponentDescriptor) (from Telerik.Web.IControl)
31.94 % DescribeComponent - 18607 ms - 4 calls - Telerik.Web.UI.RadEditor.DescribeComponent(ScriptComponentDescriptor)
25.27 % Serialize - 14721 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object)
25.27 % SerializeValue - 14721 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
25.25 % SerializeValueInternal - 14711 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.98 % SerializeEnumerable - 14551 ms - 12 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable, StringBuilder, Int32, Hashtable, SerializationFormat)
24.96 % SerializeValue - 14541 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % Serialize - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object, StringBuilder, SerializationFormat)
24.50 % SerializeValue - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % SerializeValueInternal - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % SerializeDictionary - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeDictionary(IDictionary, StringBuilder, Int32, Hashtable, SerializationFormat)
24.48 % SerializeValue - 14261 ms - 68 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.46 % SerializeValueInternal - 14250 ms - 68 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.43 % SerializeEnumerable - 14230 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable, StringBuilder, Int32, Hashtable, SerializationFormat)
24.41 % SerializeValue - 14220 ms - 264 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
19.96 % Serialize - 11627 ms - 264 calls - Telerik.Web.UI.EditorConverterBase.Serialize(Object, JavaScriptSerializer)
11.41 % ShouldSkipProperty - 6650 ms - 3680 calls - Telerik.Web.UI.EditorToolConverter.ShouldSkipProperty(PropertyInfo, Object, Object)
5.71 % ShouldSkipProperty - 3325 ms - 3576 calls - Telerik.Web.UI.EditorConverterBase.ShouldSkipProperty(PropertyInfo, Object, Object)
3.04 % IsDefaultValue - 1773 ms - 1868 calls - Telerik.Web.UI.EditorConverterBase.IsDefaultValue(PropertyInfo, Object)
2.99 % GetCustomAttributes - 1743 ms - 1868 calls - System.Reflection.RuntimePropertyInfo.GetCustomAttributes(Type, Boolean)
2.97 % GetCustomAttributes - 1732 ms - 1868 calls - System.Reflection.CustomAttribute.GetCustomAttributes(RuntimePropertyInfo, RuntimeType)
2.96 % GetCustomAttributes - 1722 ms - 1868 calls - System.Reflection.CustomAttribute.GetCustomAttributes(Module, Int32, Int32, RuntimeType, Boolean, IList)
1.58 % FilterCustomAttributeRecord - 921 ms - 4716 calls - System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord, MetadataImport, Assembly &, Module, MetadataToken, RuntimeType, Boolean, Object [], IList, RuntimeType &, RuntimeMethodHandle &, Boolean &, Boolean &)
0.52 % ResolveType - 300 ms - 4716 calls - System.Reflection.Module.ResolveType(Int32, Type [], Type [])
0.19 % get_MetadataImport - 110 ms - 4716 calls - System.Reflection.Module.get_MetadataImport()
0.09 % GetMetadataImport - 50 ms - 4716 calls - System.ModuleHandle.GetMetadataImport()
0.00 % op_Explicit - 0 ms - 4716 calls - System.IntPtr.op_Explicit(Void *)
0.05 % get_ModuleHandle - 30 ms - 4716 calls - System.Reflection.Module.get_ModuleHandle()
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(IntPtr)
0.07 % GetModuleHandle - 40 ms - 4716 calls - System.Reflection.Module.GetModuleHandle()
0.02 % get_InternalModule - 10 ms - 4716 calls - System.Reflection.Module.get_InternalModule()
0.02 % ModuleHandle..ctor - 10 ms - 4716 calls - System.ModuleHandle..ctor(Void *)
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(IntPtr)
0.05 % ResolveTypeHandle - 30 ms - 4716 calls - System.ModuleHandle.ResolveTypeHandle(Int32, RuntimeTypeHandle [], RuntimeTypeHandle [])
0.05 % GetMetadataImport - 30 ms - 4716 calls - System.ModuleHandle.GetMetadataImport()
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(Void *)
0.03 % ConvertToTypeHandleArray - 20 ms - 9432 calls - System.Reflection.Module.ConvertToTypeHandleArray(Type [])
0.03 % GetRuntimeType - 20 ms - 4716 calls - System.RuntimeTypeHandle.GetRuntimeType()
0.02 % op_Implicit - 10 ms - 4716 calls - System.Reflection.MetadataToken.op_Implicit(MetadataToken)
0.24 % IsAssignableFrom - 140 ms - 4716 calls - System.Type.IsAssignableFrom(Type)
0.12 % CanCastTo - 70 ms - 4716 calls - System.RuntimeType.CanCastTo(RuntimeType, RuntimeType)
0.03 % CanCastTo - 20 ms - 4716 calls - System.RuntimeTypeHandle.CanCastTo(RuntimeTypeHandle)
0.02 % GetTypeHandleInternal - 10 ms - 9432 calls - System.RuntimeType.GetTypeHandleInternal()
0.07 % get_UnderlyingSystemType - 40 ms - 9432 calls - System.RuntimeType.get_UnderlyingSystemType()
0.21 % AptcaCheck - 120 ms - 1828 calls - System.Reflection.Assembly.AptcaCheck(Assembly)
0.14 % get_AssemblyHandle - 80 ms - 3656 calls - System.Reflection.Assembly.get_AssemblyHandle()
0.02 % get_InternalAssembly - 10 ms - 3656 calls - System.Reflection.Assembly.get_InternalAssembly()
0.02 % AssemblyHandle..ctor - 10 ms - 3656 calls - System.AssemblyHandle..ctor(Void *)
0.03 % AptcaCheck - 20 ms - 1828 calls - System.AssemblyHandle.AptcaCheck(AssemblyHandle)
0.00 % op_Explicit - 0 ms - 1828 calls - System.IntPtr.op_Explicit(Void *)
0.09 % get_Assembly - 50 ms - 3656 calls - System.RuntimeType.get_Assembly()
0.03 % GetAssemblyHandle - 20 ms - 3656 calls - System.RuntimeTypeHandle.GetAssemblyHandle()
0.02 % AssemblyHandle..ctor - 10 ms - 3656 calls - System.AssemblyHandle..ctor(Void *)
0.02 % GetTypeHandleInternal - 10 ms - 3656 calls - System.RuntimeType.GetTypeHandleInternal()
Is there anything I can do to improve performance?
I tried to log this under IE 7 but got a JavaScript error:
Line: 4459
Error: '_f.get_contentArea()' is null or not an object.
I'm tracking down some bottlenecks in our product using JetBrains dotTrace product and have found that the RadEditor is taking about 5 seconds to render on the server.
We're using RadEditor.NET2.dll version 7.2.1.0.
Below is some profiling data that I collected. The format is:
<percentage of time> <method name> - <total time> - <total calls> <fully qualified method name>
Every time a method calls another method, that method is shown below the caller and indented by two spaces. The result is a tree of method calls.
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - Telerik.Web.UI.RadEditor.RegisterScriptDescriptors()
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - System.Web.UI.ScriptManager.RegisterScriptDescriptors(IScriptControl)
33.56 % RegisterScriptDescriptors - 19548 ms - 4 calls - System.Web.UI.ScriptControlManager.RegisterScriptDescriptors(IScriptControl)
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.RadWebControl.GetScriptDescriptors() (from System.Web.UI.IScriptControl)
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.RadEditor.GetScriptDescriptors()
33.54 % GetScriptDescriptors - 19538 ms - 4 calls - Telerik.Web.UI.ScriptRegistrar.GetScriptDescriptors(WebControl)
31.94 % DescribeComponent - 18607 ms - 4 calls - Telerik.Web.UI.RadWebControl.DescribeComponent(ScriptComponentDescriptor) (from Telerik.Web.IControl)
31.94 % DescribeComponent - 18607 ms - 4 calls - Telerik.Web.UI.RadEditor.DescribeComponent(ScriptComponentDescriptor)
25.27 % Serialize - 14721 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object)
25.27 % SerializeValue - 14721 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
25.25 % SerializeValueInternal - 14711 ms - 16 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.98 % SerializeEnumerable - 14551 ms - 12 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable, StringBuilder, Int32, Hashtable, SerializationFormat)
24.96 % SerializeValue - 14541 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % Serialize - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object, StringBuilder, SerializationFormat)
24.50 % SerializeValue - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % SerializeValueInternal - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.50 % SerializeDictionary - 14271 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeDictionary(IDictionary, StringBuilder, Int32, Hashtable, SerializationFormat)
24.48 % SerializeValue - 14261 ms - 68 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.46 % SerializeValueInternal - 14250 ms - 68 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
24.43 % SerializeEnumerable - 14230 ms - 32 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable, StringBuilder, Int32, Hashtable, SerializationFormat)
24.41 % SerializeValue - 14220 ms - 264 calls - System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object, StringBuilder, Int32, Hashtable, SerializationFormat)
19.96 % Serialize - 11627 ms - 264 calls - Telerik.Web.UI.EditorConverterBase.Serialize(Object, JavaScriptSerializer)
11.41 % ShouldSkipProperty - 6650 ms - 3680 calls - Telerik.Web.UI.EditorToolConverter.ShouldSkipProperty(PropertyInfo, Object, Object)
5.71 % ShouldSkipProperty - 3325 ms - 3576 calls - Telerik.Web.UI.EditorConverterBase.ShouldSkipProperty(PropertyInfo, Object, Object)
3.04 % IsDefaultValue - 1773 ms - 1868 calls - Telerik.Web.UI.EditorConverterBase.IsDefaultValue(PropertyInfo, Object)
2.99 % GetCustomAttributes - 1743 ms - 1868 calls - System.Reflection.RuntimePropertyInfo.GetCustomAttributes(Type, Boolean)
2.97 % GetCustomAttributes - 1732 ms - 1868 calls - System.Reflection.CustomAttribute.GetCustomAttributes(RuntimePropertyInfo, RuntimeType)
2.96 % GetCustomAttributes - 1722 ms - 1868 calls - System.Reflection.CustomAttribute.GetCustomAttributes(Module, Int32, Int32, RuntimeType, Boolean, IList)
1.58 % FilterCustomAttributeRecord - 921 ms - 4716 calls - System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord, MetadataImport, Assembly &, Module, MetadataToken, RuntimeType, Boolean, Object [], IList, RuntimeType &, RuntimeMethodHandle &, Boolean &, Boolean &)
0.52 % ResolveType - 300 ms - 4716 calls - System.Reflection.Module.ResolveType(Int32, Type [], Type [])
0.19 % get_MetadataImport - 110 ms - 4716 calls - System.Reflection.Module.get_MetadataImport()
0.09 % GetMetadataImport - 50 ms - 4716 calls - System.ModuleHandle.GetMetadataImport()
0.00 % op_Explicit - 0 ms - 4716 calls - System.IntPtr.op_Explicit(Void *)
0.05 % get_ModuleHandle - 30 ms - 4716 calls - System.Reflection.Module.get_ModuleHandle()
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(IntPtr)
0.07 % GetModuleHandle - 40 ms - 4716 calls - System.Reflection.Module.GetModuleHandle()
0.02 % get_InternalModule - 10 ms - 4716 calls - System.Reflection.Module.get_InternalModule()
0.02 % ModuleHandle..ctor - 10 ms - 4716 calls - System.ModuleHandle..ctor(Void *)
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(IntPtr)
0.05 % ResolveTypeHandle - 30 ms - 4716 calls - System.ModuleHandle.ResolveTypeHandle(Int32, RuntimeTypeHandle [], RuntimeTypeHandle [])
0.05 % GetMetadataImport - 30 ms - 4716 calls - System.ModuleHandle.GetMetadataImport()
0.02 % op_Explicit - 10 ms - 4716 calls - System.IntPtr.op_Explicit(Void *)
0.03 % ConvertToTypeHandleArray - 20 ms - 9432 calls - System.Reflection.Module.ConvertToTypeHandleArray(Type [])
0.03 % GetRuntimeType - 20 ms - 4716 calls - System.RuntimeTypeHandle.GetRuntimeType()
0.02 % op_Implicit - 10 ms - 4716 calls - System.Reflection.MetadataToken.op_Implicit(MetadataToken)
0.24 % IsAssignableFrom - 140 ms - 4716 calls - System.Type.IsAssignableFrom(Type)
0.12 % CanCastTo - 70 ms - 4716 calls - System.RuntimeType.CanCastTo(RuntimeType, RuntimeType)
0.03 % CanCastTo - 20 ms - 4716 calls - System.RuntimeTypeHandle.CanCastTo(RuntimeTypeHandle)
0.02 % GetTypeHandleInternal - 10 ms - 9432 calls - System.RuntimeType.GetTypeHandleInternal()
0.07 % get_UnderlyingSystemType - 40 ms - 9432 calls - System.RuntimeType.get_UnderlyingSystemType()
0.21 % AptcaCheck - 120 ms - 1828 calls - System.Reflection.Assembly.AptcaCheck(Assembly)
0.14 % get_AssemblyHandle - 80 ms - 3656 calls - System.Reflection.Assembly.get_AssemblyHandle()
0.02 % get_InternalAssembly - 10 ms - 3656 calls - System.Reflection.Assembly.get_InternalAssembly()
0.02 % AssemblyHandle..ctor - 10 ms - 3656 calls - System.AssemblyHandle..ctor(Void *)
0.03 % AptcaCheck - 20 ms - 1828 calls - System.AssemblyHandle.AptcaCheck(AssemblyHandle)
0.00 % op_Explicit - 0 ms - 1828 calls - System.IntPtr.op_Explicit(Void *)
0.09 % get_Assembly - 50 ms - 3656 calls - System.RuntimeType.get_Assembly()
0.03 % GetAssemblyHandle - 20 ms - 3656 calls - System.RuntimeTypeHandle.GetAssemblyHandle()
0.02 % AssemblyHandle..ctor - 10 ms - 3656 calls - System.AssemblyHandle..ctor(Void *)
0.02 % GetTypeHandleInternal - 10 ms - 3656 calls - System.RuntimeType.GetTypeHandleInternal()
Is there anything I can do to improve performance?
I tried to log this under IE 7 but got a JavaScript error:
Line: 4459
Error: '_f.get_contentArea()' is null or not an object.