cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Re: Commit performance degradation
Date Fri, 23 Jul 2010 11:51:49 GMT
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).


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, 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

View raw message