Hi All,
I have a general question about report structure and performance with the web viewer in .NET webforms.
Backgound:
==============
We have a report which need to display >330 'parent' rows. This report contains 4 sub reports, and the sub reports can contain 20-30 fields. Each sub report will show 'a number' of 'child' records (anything from 0-50) as an example.
The parent data source has all the child data attached and the sub reports use the same data source, with a parameter applied to filter the data to the current 'parentid'.
The total number of parent plus child records is approximately 2000.
Problem:
=============
After the data has been retrieved from the db (<1 second) and the report has had its data sources bound (~1-2 seconds), the next step is the rending of the report. This at the moment takes ~17 minutes on our live server.
Our live server is a quad core with 4GB RAM.
Additionally, CPU usage on both processors sits at 100% and memory at 4GB. When the report finishes running, the IIS worker process on the server drops down to 150-200MB memory usage, but the server memory usage stays at 4GB. If I reboot the server or IIS, the memory sits at < 1GB until I run the report again.
It feels like a leak, but I'm not able to put my finger on it at the moment.
This rendering performance is obviously 'undesirable' to say the least!
Question(s):
=============
1. With this quantity of data should we be experiencing this render speed? Whilst I wouldn't expect lightning performance < 1-2 minutes would seem more realistic for this quantity.
2. Having read the performance guidelines, I have shortlisted some areas we'd have available to us, could you prioritise which we may expect to see the greater benefit from?
a) We could attempt to reduce the complexity of the report by lowering the number of fields in the sub reports. Some may be able to be combined, or we may be able to concatenate the data on the server to reduce the number of controls.
b) We could attempt to remove the sub reports, and display tables as part of the original report, as described by the performance tips section.
c) We could maybe try to subset the data of the child reports somehow rather than pulling the whole lot and using the parameter on the original data source
d) We could write our own paged report viewer (but this seems to negate the value of using telerik as a report viewer), Having a look, there doesn't seem an in built way to incorporate server side paging into the report viewer (is this still the case?)
Any advice in this area would be greatly appreciated,
Kind Regards