Speed and Memory Use - Initial Page Load

As we've described, initial and subsequent page load speed for an ASP.NET web application is dependant upon the number of records in the dataset bound to the controls on the page. The larger the number, the slower the web page.

In this demo we compare our grid's page load performance with those of our competitors when loading 300,000 records.

The numbers do not lie - when exploiting the new capabilities of ASPxGridView along with our dataset providers, nothing can match the speed and memory footprint of the ASPxGridView.


About the Benchmark Test
All performance-related tests and comparisons were executed on the same hardware, without any other running processes (both on the client and server). Though test results are listed for the ASPxGridView, as you navigate within this demo and initiate specific operations such as sorting, real-time execution speed for your current session will be listed in red for the ASPxGridView. As you can imagine, average test results will vary based on server load - so feel free to download our demo and compare our grid for yourself.
Operation ASPxGridView Market leading Grid I Market leading Grid II
 
 
 
 

Drag a column header here to group by that column
From
Subject
Sent
Size
Attachment?
v
 
v
Peter DolanReports. The list of incomplete reports.5/25/2007110 K
Ray ShipmanEmail Attachments. Is it possible to add multiple attachments? I haven't found a way to do this.6/7/20073 K
Steve LeeData Archiving. We still don't have this features in our application.5/30/20072 K
Tom HamlettData Archiving. We still don't have this features in our application.7/10/200722 K
Ray ShipmanCannot add new vendor. This module doesn't work!5/22/2007142 K
Jeffrey W McClainEmail Attachments. Is it possible to add multiple attachments? I haven't found a way to do this.7/10/2007162 K
Dave MurrelDrag & Drop operations are not available in the scheduler module.6/15/20071 K
Mark HamiltonCheck Register. We are using different paths for different modules.5/29/2007175 K
Richard FisherIntegrating Developer Express MasterView control into an Accounting System.6/13/20073 K
Jimmy LewisReceivables Printing module is ready for testing.7/10/20072 K
 Count=300000 11, 716 M 
Page 1 of 30000 (300000 items)
Prev
1
2
3
4
5
6
7
29998
29999
30000
Next
Important Notes:
1) The initial load time for competing Grid products is approximately 10 seconds.
2) Row Expansion and Row Collapse by competing grid products are only performed against the current page.
3) Summary Computation and timings associated with it are misleading when viewing competing grid products because summaries are only computed against the current set of records on the page rather than the number of records contained within the 300,000 recordset.
C#
VB
ASPX
JS

Expand Using

 public partial class DataBinding_XPOLargeDB : BasePage {   protected void Page_Load(object sender, EventArgs e) {   if(IsSiteDemo) {   Session session = new Session();   XpoDataSource1.Session = session;   }   else {   Form.FindControl("lGeneralTerms").PreRender += new EventHandler(DataBinding_XPOLargeDB_PreRender);   Form.FindControl("tblSourceCode").Visible = false;   pSiteDemo.Visible = false;   }   }   protected string SectionParameter { get { return Page.Request.QueryString["Section"]; } }     protected void grid_SummaryDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewSummaryDisplayTextEventArgs e) {   if(e.Item.FieldName == "Size") {   e.Text = GetSizeDisplayText(e.Value);   }   }   protected void grid_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e) {   if(object.Equals(e.Column, grid.Columns["Size"]))   e.DisplayText = GetSizeDisplayText(e.Value);   }   string GetSizeDisplayText(object value) {   long size = value != null ? Convert.ToInt64(value) : 0;   int oneK = 1024;   int oneM = oneK * oneK;   int oneG = oneM * oneK;   if(size > oneG) {   long gig = size / oneG;   long meg = (size - oneG * gig) / oneM;   return string.Format("{0}, {1} M", gig, meg);   }   if(size > oneM) {   return string.Format("{0} M", size / oneM);   } else {   return string.Format("{0} K", size / oneK);   }   }   void DataBinding_XPOLargeDB_PreRender(object sender, EventArgs e) {   ((System.Web.UI.WebControls.Literal)sender).Text = "";   }   protected bool IsSiteDemo {   get { return DemoSettings.IsSiteMode; }   }  }