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

Reply via email to