Hi,
I did some tests, and found a number of ways to fix this issue.
First of all, whenever you do benchmarking, make sure you run the test
repeatedly. Running it once will not allow the JIT to kick in. Run tests
about 10 times instead, in the same go, to get more stable numbers.
Second, I changed the notifyChanges() indexing in RdfEntityIndexerMixin
to do the removes in one call to Sesame, instead of one call per object.
Third (and most important), you had forgotten to add indexes. I added this:
prefModule.forMixin( NativeConfiguration.class
).declareDefaults().tripleIndexes().set( "cspo,spoc" );
And the performance became muuuuuch better. Along with the other fixes,
my results (two-year-old MacBook Pro, 24Ghz, are:
On 2010-02-18 19.01, Stanislav Muhametsin wrote:
.18.2.2010 12:54:01
org.qi4j.entitystore.prefs.PreferencesEntityStoreMixin activate
INFO: Preferences store:/Application
17717 [main] INFO org.qi4j.index.rdf.newtests.RDFPerformanceTest - Time
to create 200 entities (ms): 1520
21787 [main] INFO org.qi4j.index.rdf.newtests.RDFPerformanceTest - Time
to complete creation uow (ms): 4070
18.2.2010 12:54:10 org.qi4j.index.rdf.query.internal.RdfQueryParserImpl
getQuery
<snip query>
26655 [main] INFO org.qi4j.index.rdf.newtests.RDFPerformanceTest - Time
to delete 200 entities (ms): 4868
97731 [main] INFO org.qi4j.index.rdf.newtests.RDFPerformanceTest - time
to complete deletion uow (ms): 71076
4864 [main] INFO org.qi4j.index.rdf.RDFPerformanceTest - Time to create
200 entities (ms): 5
4915 [main] INFO org.qi4j.index.rdf.RDFPerformanceTest - Time to
complete creation uow (ms): 51
Feb 19, 2010 12:47:07 PM
org.qi4j.index.rdf.query.internal.RdfQueryParserImpl getQuery
<snip query>
4963 [main] INFO org.qi4j.index.rdf.RDFPerformanceTest - Time to delete
200 entities (ms): 12
5145 [main] INFO org.qi4j.index.rdf.RDFPerformanceTest - time to
complete deletion uow (ms): 182
5145 [main] INFO org.qi4j.index.rdf.RDFPerformanceTest - time to
complete test (ms): 286
286ms compared to 97secs is a big difference. My guess is that the lack
of indexing was the biggest problem. In any case, I've checked in the
updated RDF indexer version which removes all entities in one call,
which should help regardless.
/Rickard
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev