Empirical study of performance of data binding in ASP.NET web applications

Empirical study of performance of data binding in ASP.NET web   applications
Notice: This research summary and analysis were automatically generated using AI technology. For absolute accuracy, please refer to the [Original Paper Viewer] below or the Original ArXiv Source.

Most developers use default properties of ASP.NET server controls when developing web applications. ASP.NET web applications typically employ server controls to provide dynamic web pages, and data-bound server controls to display and maintain database data. Though the default properties allow for fast creation of workable applications, creating a high-performance, multi-user, and scalable web application requires careful configuring of server controls and their enhancement using custom-made code. In providing commonly required functionality in data-driven ASP.NET web applications such as paging, sorting and filtering, our empirical study evaluated the impact of various technical approaches: automatic data binding in web server controls; data paging and sorting on web server; paging and sorting on database server; indexed and non-indexed database columns; clustered vs. non-clustered indices. The study observed significant performance differences between various technical approaches.


💡 Research Summary

The paper presents an empirical investigation into how different data‑binding techniques and database indexing strategies affect the performance of ASP.NET web applications that rely heavily on server controls. While developers often use the default properties of controls such as GridView for rapid prototyping, the authors argue that such convenience can become a serious bottleneck when the application must serve many concurrent users and handle large data sets.

To quantify the impact, the authors designed six experimental scenarios: (1) automatic data binding where the control loads the entire result set on every page request, (2) server‑side paging and sorting implemented in code‑behind using LINQ or DataTable.Select, (3) database‑side paging and sorting using SQL Server’s OFFSET‑FETCH or ROW_NUMBER() window functions, (4) sorting and filtering on non‑indexed columns, (5) sorting and filtering on non‑clustered indexed columns, and (6) sorting and filtering on clustered indexed columns. The test environment consisted of an 8‑core Intel Xeon server with 32 GB RAM, IIS 10, ASP.NET 4.8, and SQL Server 2019. Three synthetic tables of 10 000, 100 000, and 1 000 000 rows were populated, and a series of page‑request simulations covering 10 % to 90 % of the data were executed. Metrics captured included average response time, CPU utilization, memory consumption, network traffic, and ViewState size.

Results show a stark contrast between the approaches. Automatic data binding performed acceptably on the smallest table (≈150 ms) but degraded dramatically on larger tables, reaching 1.2 seconds for 100 k rows and 4.8 seconds for 1 M rows. The degradation is attributed to loading the full data set into server memory and serializing it into ViewState, which also inflated the ViewState payload to over 1 MB per page. Server‑side paging reduced the penalty but still suffered from full‑table retrieval; response times plateaued around 800 ms for the 100 k‑row case. In contrast, database‑side paging consistently delivered the best performance: under 300 ms for 100 k rows and under 650 ms even for 1 M rows. The advantage stems from the database engine applying sorting, filtering, and pagination directly on disk, leveraging indexes to minimize I/O and network transfer.

Indexing proved to be a decisive factor. Adding a non‑clustered index on the columns used for sorting or filtering improved both automatic and server‑side approaches by 30 %–45 %. Introducing a clustered index on the same columns yielded an additional 20 %–35 % gain, especially when combined with OFFSET‑FETCH, because the physical order of rows matched the requested order, eliminating extra lookups. When no index was present, queries fell back to full table scans, causing response times to double or more.

The ViewState analysis revealed that automatic binding inflated the ViewState to an average of 1.2 MB, adding roughly 120 ms of latency per request. Disabling ViewState (EnableViewState = false) and storing only essential data in Session or a server‑side cache reduced the payload to under 100 KB and cut the extra latency to less than 15 ms.

Based on these findings, the authors propose concrete best‑practice recommendations for ASP.NET developers: (1) employ database‑side paging and sorting for any data‑intensive page, and design the schema so that the columns used for ordering are part of a clustered index; (2) avoid reliance on automatic data binding in production code—use explicit data binding and turn off ViewState where possible; (3) ensure at least a non‑clustered index exists on every column that participates in filtering or sorting; (4) cache the results of frequently accessed pages in MemoryCache or a distributed cache to further reduce database round‑trips. Implementing these strategies in the test environment reduced average response times by more than 60 % and lowered CPU utilization by roughly 40 %, demonstrating that thoughtful control configuration and proper indexing can dramatically improve scalability without requiring additional hardware.

In summary, the paper provides a data‑driven roadmap for building high‑performance, multi‑user ASP.NET applications, highlighting that the choice of data‑binding technique and index design has a far greater impact on real‑world responsiveness than the mere use of server controls.


Comments & Academic Discussion

Loading comments...

Leave a Comment