Flex OLAP Benchmarks

I ran some benchmarks for the OLAP components in Flex. The OLAP components allow you to perform you’re OLAP operations client side out of the box. You *can* utilize the SDK interfaces and move your processing to the backend, should you have too much data for the browser.

That said, the benchmarks below should help define the line for “too much data.”

Record Structure:

Course:String
School:String
GradeLevel:String
SubjectArea:String
Grade:Number (Our measure)

Records / Processing Time (s)

1,000 / 3 sec
5,000 / 12 sec
10,000 / 22 sec
15,000 / 33 sec
20,000 / 43 sec

The processing times listed above are for the *client* side processing time. The data was loaded from the server before starting the benchmark.

I ran the benchmarks at various rollup depths (multiple hierarchies) which the components actually handled very well, the processing time was not significantly affected.

Extending the dataset to 125K+ records caused errors with the script timeouts occurring.

For datasets above 5-10K records, I’d suggest moving the processing to the server and passing the results to the UI. (assuming you’re looking to leverage the OLAP components as provided)

3 Replies to “Flex OLAP Benchmarks”

  1. When creating the rolled up hierarchical data, the performance of the OLAP components it utterly, astoundingly TERRIBLE. Criminally terrible.

    And the components themselves are pretty awlful too.

    We ended up writing our own, but these days there’s a couple of third party ones about, including Elixer and … one other whose name I can’t think of right now.

    If you do it yourself, just remember that the final OLAP grid is just a 2D structure, which you can represent as a dictionary or dictionaries. The keys of said dictionaries will be arrays of values (one for each dimension on the axis), and the leaf values are probably arrays of all the rows which match the two keys.

    Anyway, all you really need to know is DO NOT use these components.

Leave a Reply

Your email address will not be published. Required fields are marked *