[Mondrian] perf regression from change for large dimensions

Julian Hyde jhyde at pentaho.com
Sat May 24 13:01:56 EDT 2008


Thanks - I have logged bug 1971406, "perf regression from change for large
dimensions" and assigned to Luis F. Canals.

Julian

> -----Original Message-----
> From: mondrian-bounces at pentaho.org 
> [mailto:mondrian-bounces at pentaho.org] On Behalf Of John V. Sichi
> Sent: Saturday, May 24, 2008 2:14 AM
> To: mondrian at pentaho.org
> Subject: [Mondrian] perf regression from change for large dimensions
> 
> If I sync back to eigenchange 11048, the query below runs in about 22 
> seconds on Derby for me:
> 
> with set necj as
> NonEmptyCrossJoin(NonEmptyCrossJoin([Customers].[Name].members
> ,[Store].[Store 
> Name].members),[Product].[Product Name].members)
> select
> {[Measures].[Unit Sales]} on columns,
> tail(intersect(necj,necj,ALL),5) on rows
> from sales;
> 
> With eigenchange 11049 (large dimensions), it runs for ages.  The 
> problem is the O(n^2) interaction between the LinkedList in 
> mondrian.rolap.Target and the get(i) calls in TraversalList (which is 
> expecting ArrayList random-access efficiency).  This is the 
> stack where 
> the time is burned:
> 
>      at java/util/LinkedList.get(LinkedList.java:313)[optimized]
>      at mondrian/rolap/Target$1.get(Target.java:210)[inlined]
>      at mondrian/rolap/Target$1.get(Target.java:231)[optimized]
>      at 
> mondrian/util/TraversalList.get(TraversalList.java:52)[inlined]
>      at 
> mondrian/util/TraversalList$1.hasNext(TraversalList.java:76)[o
> ptimized]
>      at 
> java/util/Collections$UnmodifiableCollection$1.hasNext(Collect
ions.java:1009)[optimized]
>      at 
> mondrian/olap/fun/IntersectFunDef.buildSearchableCollection(In
> tersectFunDef.java:85)
> 
> (The query is contrived just as an isolated example; the same 
> issue can 
> occur in many places.)
> 
> I'm not sure about the way mondrian.rolap.Target relies on 
> LinkedList as 
> a FIFO queue, but if that needs to remain as is, then TraversalList 
> needs to be changed to maintain iterators over the underlying 
> lists for 
> the case of sequential access.
> 
> JVS
> 
> 
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian
> 





More information about the Mondrian mailing list