When I generate a report which is about 50-150 pages. The application seems to run slower and slower. After 2 or 3 request, i hit timeout.
I notice that w3wp.exe is taking a lot of memory. It can go up to 1GB.
How can I overcomes this to improve my performance?
3 Answers, 1 is accepted
answered on 04 Jun 2008, 12:11 PM
You are the first one to report a timeout, but we admit that there are some performance bottle-necks. Currently every time the report is previewed or
exported through the viewer it is processed and rendered from scratch.
Obviously, this is not the best way to do this but we still lack any
One thing that probably can speed up the report processing is the data
source initialization. If you use the Report Wizard or the Data Source
and connect to a database, the wizards adds a code to fill the typed
data set in the report's constructor. This can significantly decrease
the report instantiation time especially if it takes longer to retrieve
the data from the database. If you move all code that creates and fills
the dataset outside the report and then pass this data set to the
Report.DataSource property, I suppose you will see some better
Our current goal is to cover some basic reporting functionality we still lack and then
we will move to the performance optimizations and productivity. Anyway,
this task is already in our TODO list and I hope we soon will have the
chance to work on it - most likely Q3 2008.
Thank you for the
understanding and please excuse us for the temporary inconvenience.
Do you mind to share the sample source to creates and fills the dataset outside the report and then pass this data set to the Report.DataSource property?
answered on 06 Jun 2008, 12:02 PM
After reviewing your initial inquiry once again, we got to the conclusion that using our Reporting for such purposes is not exactly what it has been designed for. Every report instantiation will cache the whole report in the server's memory - this is of course per session. So if you have 5 simultaneous users working with the report at the same time and the report is taking up 200 Mb, then you will have 1 GB total memory reserved for our report only. These 200 Mbs are not only data, but the whole report being processed - every report control has numerous properties.
Unfortunately as explained in our previous post we still miss a caching mechanism to handle this, and we also lack a table item that would fastened up the initialization. Currently the whole reports is being processed, because we do not know at design time how many items will fit on a single page.
If you need this data for web presentation only, we can suggest a grid control instead, moreover our RadGrid control exposes API for pdf, csv, word, excel exporting.
Sorry for the inconvenience once again and let us know of your thoughts.