I’ve been having some performance problems with Crystal Reports that were targeting a new Oracle server of ours. Since I’ve had many connection issues with Oracle, I jumped to conclusions and assumed it was a performance issue with Oracle. I was wrong. :D
In my .Net code put some StopWatch objects into place to time each section of code that executed. Come to find out, my code was dragging on the initial ReportDocument.Load call which just opens the report, it doesn’t execute any database calls. Another interesting tidbit it was just moved to Crystal Reports 2011 (e.g. Crystal Reports 14).
After much trial and error and combing through settings I thought, printers have always been a headache point with Crystal Reports, take a look there. Inside of the “Page Setup” there is an option called “No Printer (optimize for screen display)”. Sure enough, after checking this and then saving the report, my report loaded in about .2 seconds (down from 20-25 seconds). That was my culprit.
Other causes of this problem maybe that Crystal is trying to “Verify” things on the first load (that the database is the same, etc.). In the report options, remove the check boxes on these so it doesn’t verify. You can still do this through the editor but you don’t want this happening for performance reasons in the reporting environment (if your database changes you will know when the report fails under that case, I feel the trade off is worth it, especially if it’s causing the report to take 20 seconds to load as opposed to say, .2). If you have good error reporting in place you will know when this happens ASAP (in the rare case your table might change).
I also still have Crystal Reports 10 installed on my machine where I never had this problem. I did want to verify if this setting existed in the old version and indeed it did exist (the dialog looks much different though). Chalk it up to new version, new problem.