Hi,
When I create a simple RadGridView (*) with 50 columns and 40 rows that are visible on the screen at the same time this becomes slow. Both the initial filling of the grid and scrolling through them is slow.
Is there some option I missed?
When I profile it almost all of the time is spent in Windows dll's:
Functions Doing Most Individual Work
Name Exclusive Samples %
[PresentationCore.ni.dll] 75,78
Functions Doing Most Individual Work
Name Exclusive Samples %
[PresentationFramework.ni.dll] 10,20
The system I ran the performance test on: Intel Core i7-3632QM 2.2Ghz, 8G memory.
(*)only text columns, no converters, no sorting, no filtering
Regards,
Bayram
When I create a simple RadGridView (*) with 50 columns and 40 rows that are visible on the screen at the same time this becomes slow. Both the initial filling of the grid and scrolling through them is slow.
Is there some option I missed?
When I profile it almost all of the time is spent in Windows dll's:
Functions Doing Most Individual Work
Name Exclusive Samples %
[PresentationCore.ni.dll] 75,78
Functions Doing Most Individual Work
Name Exclusive Samples %
[PresentationFramework.ni.dll] 10,20
The system I ran the performance test on: Intel Core i7-3632QM 2.2Ghz, 8G memory.
(*)only text columns, no converters, no sorting, no filtering
Regards,
Bayram
using
System.Windows;
using
System.Collections.Generic;
using
System;
using
System.Collections.ObjectModel;
namespace
TelerikTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
InitializeComponent();
DataContext =
this
;
}
public
ObservableCollection<PowerField> Fields
{
get
{
return
(ObservableCollection<PowerField>)GetValue(FieldsProperty); }
set
{ SetValue(FieldsProperty, value); }
}
public
static
readonly
DependencyProperty FieldsProperty =
DependencyProperty.Register(
"Fields"
,
typeof
(ObservableCollection<PowerField>),
typeof
(MainWindow),
new
PropertyMetadata(
null
));
private
void
FillFields(
string
prefix)
{
List<PowerField> fields =
new
List<PowerField>();
for
(
int
i = 0; i < 100; i++)
{
fields.Add(
new
PowerField()
{
Col1 = prefix +
"Col 1, Row "
+ i,
Col2 = prefix +
"Col2, Row "
+ i,
Col3 = prefix +
"Col3, Row "
+ i,
Col4 = prefix +
"Col4, Row "
+ i,
Col5 = prefix +
"Col5, Row "
+ i,
Col6 = prefix +
"Col6, Row "
+ i,
Col7 = prefix +
"Col7, Row "
+ i,
Col8 = prefix +
"Col8, Row "
+ i,
Col9 = prefix +
"Col9, Row "
+ i,
Col10 = prefix +
"Col10, Row "
+ i,
Col11 = prefix +
"Col11, Row "
+ i,
Col12 = prefix +
"Col12, Row "
+ i,
Col13 = prefix +
"Col13, Row "
+ i,
Col14 = prefix +
"Col14, Row "
+ i,
Col15 = prefix +
"Col15, Row "
+ i,
Col16 = prefix +
"Col16, Row "
+ i,
Col17 = prefix +
"Col17, Row "
+ i,
Col18 = prefix +
"Col18, Row "
+ i,
Col19 = prefix +
"Col19, Row "
+ i,
Col20 = prefix +
"Col20, Row "
+ i,
Col21 = prefix +
"Col21, Row "
+ i,
Col22 = prefix +
"Col22, Row "
+ i,
Col23 = prefix +
"Col23, Row "
+ i,
Col24 = prefix +
"Col24, Row "
+ i,
Col25 = prefix +
"Col25, Row "
+ i,
Col26 = prefix +
"Col26, Row "
+ i,
Col27 = prefix +
"Col27, Row "
+ i,
Col28 = prefix +
"Col28, Row "
+ i,
Col29 = prefix +
"Col29, Row "
+ i,
Col30 = prefix +
"Col30, Row "
+ i,
Col31 = prefix +
"Col31, Row "
+ i,
Col32 = prefix +
"Col32, Row "
+ i,
Col33 = prefix +
"Col33, Row "
+ i,
Col34 = prefix +
"Col34, Row "
+ i,
Col35 = prefix +
"Col35, Row "
+ i,
Col36 = prefix +
"Col36, Row "
+ i,
Col37 = prefix +
"Col37, Row "
+ i,
Col38 = prefix +
"Col38, Row "
+ i,
Col39 = prefix +
"Col39, Row "
+ i,
Col40 = prefix +
"Col40, Row "
+ i,
Col41 = prefix +
"Col41, Row "
+ i,
Col42 = prefix +
"Col42, Row "
+ i,
Col43 = prefix +
"Col43, Row "
+ i,
Col44 = prefix +
"Col44, Row "
+ i,
Col45 = prefix +
"Col45, Row "
+ i,
Col46 = prefix +
"Col46, Row "
+ i,
Col47 = prefix +
"Col47, Row "
+ i,
Col48 = prefix +
"Col48, Row "
+ i,
Col49 = prefix +
"Col49, Row "
+ i,
Col50 = prefix +
"Col50, Row "
+ i,
});
}
Fields =
new
ObservableCollection<PowerField>(fields);
}
private
void
Click(
object
sender, RoutedEventArgs e)
{
string
prefix = DateTime.Now.ToString(
"ss"
) +
" "
;
FillFields(prefix);
}
}
public
class
PowerField
{
public
string
Col1 {
get
;
set
; }
public
string
Col2 {
get
;
set
; }
public
string
Col3 {
get
;
set
; }
public
string
Col4 {
get
;
set
; }
public
string
Col5 {
get
;
set
; }
public
string
Col6 {
get
;
set
; }
public
string
Col7 {
get
;
set
; }
public
string
Col8 {
get
;
set
; }
public
string
Col9 {
get
;
set
; }
public
string
Col10 {
get
;
set
; }
public
string
Col11 {
get
;
set
; }
public
string
Col12 {
get
;
set
; }
public
string
Col13 {
get
;
set
; }
public
string
Col14 {
get
;
set
; }
public
string
Col15 {
get
;
set
; }
public
string
Col16 {
get
;
set
; }
public
string
Col17 {
get
;
set
; }
public
string
Col18 {
get
;
set
; }
public
string
Col19 {
get
;
set
; }
public
string
Col20 {
get
;
set
; }
public
string
Col21 {
get
;
set
; }
public
string
Col22 {
get
;
set
; }
public
string
Col23 {
get
;
set
; }
public
string
Col24 {
get
;
set
; }
public
string
Col25 {
get
;
set
; }
public
string
Col26 {
get
;
set
; }
public
string
Col27 {
get
;
set
; }
public
string
Col28 {
get
;
set
; }
public
string
Col29 {
get
;
set
; }
public
string
Col30 {
get
;
set
; }
public
string
Col31 {
get
;
set
; }
public
string
Col32 {
get
;
set
; }
public
string
Col33 {
get
;
set
; }
public
string
Col34 {
get
;
set
; }
public
string
Col35 {
get
;
set
; }
public
string
Col36 {
get
;
set
; }
public
string
Col37 {
get
;
set
; }
public
string
Col38 {
get
;
set
; }
public
string
Col39 {
get
;
set
; }
public
string
Col40 {
get
;
set
; }
public
string
Col41 {
get
;
set
; }
public
string
Col42 {
get
;
set
; }
public
string
Col43 {
get
;
set
; }
public
string
Col44 {
get
;
set
; }
public
string
Col45 {
get
;
set
; }
public
string
Col46 {
get
;
set
; }
public
string
Col47 {
get
;
set
; }
public
string
Col48 {
get
;
set
; }
public
string
Col49 {
get
;
set
; }
public
string
Col50 {
get
;
set
; }
}
}
<
Window
x:Class
=
"TelerikTest.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:pc
=
"clr-namespace:TelerikTest"
WindowState
=
"Maximized"
Title
=
"MainWindow"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
telerik:RadButton
Click
=
"Click"
Content
=
"Fill Fields"
/>
<
telerik:RadGridView
x:Name
=
"MainGrid"
Grid.Row
=
"1"
ItemsSource
=
"{Binding Fields}"
IsFilteringAllowed
=
"False"
CanUserSortColumns
=
"False"
CanUserFreezeColumns
=
"False"
RowIndicatorVisibility
=
"Collapsed"
ShowGroupPanel
=
"False"
AutoGenerateColumns
=
"False"
EnableColumnVirtualization
=
"True"
EnableRowVirtualization
=
"True"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col1}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col2}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col3}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col4}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col5}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col6}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col7}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col8}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col9}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col10}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col11}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col12}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col13}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col14}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col15}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col16}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col17}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col18}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col19}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col20}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col21}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col22}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col23}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col24}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col25}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col26}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col27}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col28}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col29}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col30}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col31}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col32}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col33}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col34}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col35}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col36}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col37}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col38}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col39}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col40}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col41}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col42}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col43}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col44}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col45}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col46}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col47}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col48}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col49}"
/>
<
telerik:GridViewDataColumn
Width
=
"30"
DataMemberBinding
=
"{Binding Col50}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
Window
>