Hi Cosmin,

Thanks a lot for letting us know about the problem and for filing a Jira. I was able to reproduce it and even create a pretty chart in OpenOffice showing smooth linear slowdown. There was a piece of code in the ObjectStore with O(N) performance. Interestingly at the time when this code was written, I vaguely recall considering it a "performance optimization" :-)

Anyways, I will commit a fix for 3.0 and 3.1 shortly. It will be included in the upcoming 3.0.1. My new chart is showing constant performance (even with a slight improvement as the number of objects goes up, probably due to HotSpot).

Andrus



On Jul 23, 2010, at 10:31 AM, Andrus Adamchik wrote:

I was going to take a look at this in any event, but feel free to open a Jira. This will help to track it indeed.

I wrote applications with Cayenne that insert millions of rows. There's always some tweaking involved with high-end cases no matter which framework you use.

Andrus


On Jul 23, 2010, at 10:11 AM, Cosmin Marian wrote:
Hello,

I didn't have time to investigate this, mostly because I was busy moving parts of our persistence layer to openjpa (which is a pain to make work). Our server can make millions of insert per day so this problem prevents us from using Cayenne. When I will have some time I will try to debug it but meanwhile I was wondering if this at least was added as a bug so it will receive attention latter.

Thanks,
Cosmin



Andrus Adamchik wrote:
You may try to compare profiles of individual loop runs. I.e. same code, but different value of "i" and see where they differ.

Andrus


On Jul 14, 2010, at 2:53 PM, [email protected] wrote:

Hello,

Yes, I am on Cayenne 3.0 release.

I profiled the test but got a bit lost. Eclipse profiler is not very easy
to use and cayenne is quite complex.

From what I have seen, ObjectStore.postprocessAfterCommit() takes a lot of
time.

Actually, from my two tests (I set the relation -> slow, I don't set it -> constant time) I noticed that postprocessAfterCommit() takes much more
time in the first case.

If you have an idea on what to look for in a profile or for a better test,
let me know, I will do the tests.

Thanks,
Cosmin

Andrus Adamchik wrote:
This is odd indeed. Are you on Cayenne 3.0?

I am not aware of this issue. All operations involved are constant time
ops regardless of the number of objects previously cached (such as entry
lookup in a HashMap or a list.add(..) operation).

So I may try to run this code in profiler to see why it is slowing down.
If you have access to a profiler and willing to profile it yourself,
this will help a lot of course :-)

Andrus







Reply via email to