You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Cosmin Marian (JIRA)" <ji...@apache.org> on 2010/07/23 09:54:51 UTC

[jira] Created: (CAY-1468) Commit performance degradation

Commit performance degradation
------------------------------

                 Key: CAY-1468
                 URL: https://issues.apache.org/jira/browse/CAY-1468
             Project: Cayenne
          Issue Type: Bug
          Components: Core Library
    Affects Versions: 3.0
            Reporter: Cosmin Marian


While developing an application using Cayenne I noticed that the
performance of  DataContext.commitChanges()  degrades with the number of
commits done.

To be more specific, I have a model with two entities: Result and
ResultStream, with a many to one relation from Result to ResultStream.

The test I do is simple: I generate a lot of Result objects, all linked to
the same ResultStream and I call commit after each Result added to the
DataContext and measure the time it takes to perform the commit. I notice
that this time grows fairly linear. Of course, the growth is noticeably
after generating many results


Here is the source code of the test:

public class Main {

    public static void main(String[] args) {
        DataContext dc = DataContext.createDataContext();

        final int stepSize = 500;
        final int nbSteps = 50;

        SelectQuery sq = new SelectQuery(ResultStream.class);

        ResultStream rs = (ResultStream) dc.performQuery(sq).get(0);

        StopWatch sw = new StopWatch();
        sw.start();

        for (int i = 1; i <= nbSteps * stepSize; ++i) {
            Result t = new Result();
            t.setValue(i);
            t.setResultStream(rs);

            dc.commitChanges();

            if (i % stepSize == 0) {
                sw.stop();
                System.out.printf("%6d, %s, %5d\n", i,
DurationFormatUtils.formatDurationHMS(sw.getTime()),
sw.getTime());
                sw.reset();
                sw.start();
            }
        }
    }
}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (CAY-1468) Commit performance degradation

Posted by "Andrus Adamchik (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAY-1468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrus Adamchik closed CAY-1468.
--------------------------------

    Fix Version/s: 3.0.1
       Resolution: Fixed

> Commit performance degradation
> ------------------------------
>
>                 Key: CAY-1468
>                 URL: https://issues.apache.org/jira/browse/CAY-1468
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 3.0
>            Reporter: Cosmin Marian
>             Fix For: 3.0.1
>
>
> While developing an application using Cayenne I noticed that the
> performance of  DataContext.commitChanges()  degrades with the number of
> commits done.
> To be more specific, I have a model with two entities: Result and
> ResultStream, with a many to one relation from Result to ResultStream.
> The test I do is simple: I generate a lot of Result objects, all linked to
> the same ResultStream and I call commit after each Result added to the
> DataContext and measure the time it takes to perform the commit. I notice
> that this time grows fairly linear. Of course, the growth is noticeably
> after generating many results
> Here is the source code of the test:
> public class Main {
>     public static void main(String[] args) {
>         DataContext dc = DataContext.createDataContext();
>         final int stepSize = 500;
>         final int nbSteps = 50;
>         SelectQuery sq = new SelectQuery(ResultStream.class);
>         ResultStream rs = (ResultStream) dc.performQuery(sq).get(0);
>         StopWatch sw = new StopWatch();
>         sw.start();
>         for (int i = 1; i <= nbSteps * stepSize; ++i) {
>             Result t = new Result();
>             t.setValue(i);
>             t.setResultStream(rs);
>             dc.commitChanges();
>             if (i % stepSize == 0) {
>                 sw.stop();
>                 System.out.printf("%6d, %s, %5d\n", i,
> DurationFormatUtils.formatDurationHMS(sw.getTime()),
> sw.getTime());
>                 sw.reset();
>                 sw.start();
>             }
>         }
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.