chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Müller <f...@apache.org>
Subject Re: Very bad performance when explicitly paging
Date Sat, 09 Feb 2013 19:26:34 GMT
Hi Bindu,

I cannot comment on the absolute numbers. There many factors that can 
affect the performance and you seem to have an issue in your setup.
But I can explain the relative difference between your tests.

By default, OpenCMIS fetches batches of 100 objects. Since your test 
doesn't iterate through all children, it only fetches one batch.

Your second test forces OpenCMIS to fetch a batch of 1000 objects. 
Fetching 10 times more objects results in a 10 times longer response time.

Btw. setMaxItemsPerPage() doesn't do any paging. It's a tuning option.
Paging works like this:

ItemIterable<CmisObject> page = session.getObjectByPath("/My 
Project/Forms").getChildren(ctx).skipTo(100).getPage(100);


Florian


P.S.: If you want to learn about CMIS performance tuning have a look at 
the book "CMIS and Apache Chemistry in Action" 
(http://www.manning.com/mueller/).



> I'm not sure if the following is an Alfresco issue or a Chemistry issue, so for now I'm
reporting it to both sets of folks :) Of course it's possible that this is not an issue at
all. As I said in my previous post I'm testing with CMIS Workbench 0.8 and against Alfresco
Enterprise 4.2.1.8.
>
> In Alfresco, I used the following javascript to create 1000 empty documents in a folder:
>
> ---
> logger.log('STARTING');
> for (var i = 1; i<= 1000; i++)
> {
>    document.createFile('test-' + i + '.txt');
> }
> logger.log('DONE');
> ---
>
> I'm profiling against the 3.x Web Services bindings using the Groovy Console in CMIS
Workbench.
>
> The following script consistently runs in 1-2 seconds:
>
> ---
> import org.apache.chemistry.opencmis.client.api.*
> import groovy.time.*
>
> Date start = new Date();
> println start;
>
> OperationContext ctx = session.createOperationContext();
> println session.getObjectByPath("/My Project/Forms").getChildren(ctx).getTotalNumItems();
>
> Date stop = new Date();
> println stop;
>
> TimeDuration td = TimeCategory.minus( stop, start )
> println td
>
> println "DONE";
> ---
>
> However the following script, where I just set the max items per page, consistently takes
15-17 seconds:
>
> ---
> import org.apache.chemistry.opencmis.client.api.*
> import groovy.time.*
>
> Date start = new Date();
> println start;
>
> OperationContext ctx = session.createOperationContext();
> // FOLLOWING LINE IS THE NEW CODE
> ctx.setMaxItemsPerPage(1000);
> // PREVIOUS LINE IS THE NEW CODE
> println session.getObjectByPath("/My Project/Forms").getChildren(ctx).getTotalNumItems();
>
> Date stop = new Date();
> println stop;
>
> TimeDuration td = TimeCategory.minus( stop, start )
> println td
>
> println "DONE";
> ---
>
> Hope this is useful for folks,
>
>
> -- Bindu

Mime
View raw message