StrataFrame Forum

BBS & Report Sharphooter perfromance issue.

http://forum.strataframe.net/Topic25412.aspx

By Larry Caylor - 12/15/2009

Attached is a sample program that creates two Report Sharpshooter reports; one using a SF BBS as the data source and one that uses a dataset. Aside from the data source both reports are identical. The sample program uses the SF Sample database as its data source. What I've found is that when a BBS is used as a data source, it takes RSS longer to render the report and the rendering time increases dramatically as the number of records increases. The SF sample DB only contins around 19K customer records but this is sufficient to demonstrate the difference. On my development system the BBS based report takes about 43 seconds to render while the dataset based report takes about 6 seconds. The tests were run outside of VS. Is this to be expected when using a BBS as a report data source or am I missing something that could improve performance? The sample was created using SF 1.7.0.2 and RSS 4.0.3.5.
By Edhy Rijo - 12/15/2009

Hi Larry,



I tested you sample and can confirm your findings. Using a dataset it took 3.5 seconds and using a BBS it took 14.4 seconds.



I review your code and could not find anything wrong. It is understandable that the BBS is doing more work than the plain dataset, but the difference is huge and in this case very noticeable.



I know that there are many changes that will be introduce to the BO and BBS for future versions of SF so I hope Trent can test this and find a solution for the BBS other than just use the plain dataset which may as well fit the bill in your case.
By Larry Caylor - 12/23/2009

I profiled my sample application using ANTS 5.0 and found that the performance bottleneck is in the SF SharedDataTableCollection.AddBusinessObjectTable method. The application spends most of it's time trying to determine if the _BOsUsingTable collection already contains the business object. This isn't too noticeable with a small number of records but the time increases dramatically as the number of records increases. I was able to refactor AddBusinessObjectTable to reduce the time it takes to render approximately 20,000 records on my development PC by 35%. (See attached code listing). While 35% is an improvement I feel there is a real need for a lighter weight read-only business object that can act as a datasource for reporting tools. I've hand coded a "report binding object" that returns a light weight read-only object for each row in the standard SF BO that doesn't use a shared data table, but it introduces a lot of extra "Property" coding and maintenance that could be handled by the BO mapper if SF had a read-only object. Are there any plans for such an object in a future version of SF or is there some other way to improve performance with reporting tools such as RSS?