Hi all,
I've implemented property prefetching in nxcore.
This means you can control which properties are used to initialize a new
DocumentModel.
This avoid to load entire schema data which may be a costly operation
(especially if the schema is big and have complex types)
When accessing a property not prefetched the entire parent schema will
be loaded. This usually happens when entering the page
that display/edit the DocumentModel.
So the prefetching is especially useful for listing children documents
that needs only a small subset of properties to be loaded
Here are the new results of the same test - see my previous email
(calling getChildren() for 17818 GEIDE documents)
I run the test 4 times for each of the following configurations:
1. prefetching only dc:title:
<prefetch>dc:title</prefetch>
1st run: 53.474000000002405 sec.
2nd run: 44.83799999999909 sec.
3rd run: 44.83799999999909 sec.
4th run: 45.51399999999991sec.
~ 47.17 sec => 0.0026 sec per iteration
2. prefetching 4 properties (the properties used by the web client to
display document lists)
<prefetch>common.icon, dc:title, dc:modified, dc:contributors</prefetch>
1st run: 59.17800000000126 sec
2nd run: 50.47499999999744 sec
3rd run: 50.25299999999888 sec
4th run: 2.40400000000286 sec
~ 55.58 sec => 0.0031sec per iteration
3. prefetching the entrie dublincore schema
<prefetch>dublincore</prefetch>
1st run: 151.58500000001374 sec.
2nd run: 94.64499999999938 sec.
3rd run: 90.21400000000061 sec.
4th run: 90.1530000000008 sec.
~106.65 sec => 0.006 sec per iteration
4. prefetching all schemas
1st run: 481.0899999999764 sec.
2nd run: 760.1829999999819 sec.
3rd run: 751.6479999999821 sec.
4th run: 757.9399999999843 sec.
~687.71 sec => 0.038 sec per iteration
So by prefetching only the needed properties we get an iteration time of
0.0031sec instead of 0.038 for the full set of schemas (~12 times faster
:) )
This means we can fetch 20 documents in 0.06 seconds, 100 documents in
0.3 seconds and ~333 docs in 1 second.
So even having a pagination of 100 docs per page on the core side we
have an acceptable time of 0.3 seconds
Bogdan
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm