Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Development/Performance/Results/1.1"

(JPA Performance Regression Test Suite)
Line 88: Line 88:
 
</tr><tr>
 
</tr><tr>
 
<td>MassInsertAddress</td><td>1.69%</td>
 
<td>MassInsertAddress</td><td>1.69%</td>
 +
</tr><tr>
 +
</tr><tr>
 +
<td>UpdateAddress</td><td>n/a</td>
 
</tr><tr>
 
</tr><tr>
 
<td>InsertEmp</td><td>4.46%</td>
 
<td>InsertEmp</td><td>4.46%</td>
Line 93: Line 96:
 
<td>InsertDeleteEmp</td><td>-2.10%</td>
 
<td>InsertDeleteEmp</td><td>-2.10%</td>
 
</tr>
 
</tr>
 +
</tr><tr>
 +
<td>UpdateEmployee</td><td>n/a</td>
 +
</tr><tr>
 +
</tr><tr>
 +
<td>ComplexUpdateEmployee</td><td>n/a</td>
 +
</tr><tr>
 
</table>
 
</table>
  
Line 102: Line 111:
 
<td>Test</td><td>% Dif</td>
 
<td>Test</td><td>% Dif</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddressReadOnly</td><td>0.55%</td>
+
<td>ReadAllAddressReadOnly</td><td>8.33%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddress</td><td>1.92%</td>
+
<td>ReadAllAddress</td><td>21.37%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddressSimpleJPQLReadOnly</td><td>4.89%</td>
+
<td>ReadAllAddressSimpleJPQLReadOnly</td><td>21.04%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddressSimpleJPQL</td><td>4.34%</td>
+
<td>ReadAllAddressSimpleJPQL</td><td>22.29%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddressNamedQueryReadOnly</td><td>4.87%</td>
+
<td>ReadAllAddressNamedQueryReadOnly</td><td>21.32%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllAddressNamedQuery</td><td>5.34%</td>
+
<td>ReadAllAddressNamedQuery</td><td>31.28%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpReadOnly</td><td>-0.07%</td>
+
<td>ReadAllEmpReadOnly</td><td>14.62%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmp</td><td>3.34%</td>
+
<td>ReadAllEmp</td><td>25.07%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpComplexJPQLReadOnly</td><td>2.42%</td>
+
<td>ReadAllEmpComplexJPQLReadOnly</td><td>23.07%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpComplexJPQL</td><td>3.33%</td>
+
<td>ReadAllEmpComplexJPQL</td><td>25.95%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpComplexDynJPQLReadOnly</td><td>-1.88%</td>
+
<td>ReadAllEmpComplexDynJPQLReadOnly</td><td>0.21%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpCompletelyReadOnly</td><td>0.51%</td>
+
<td>ReadAllEmpCompletelyReadOnly</td><td>12.29%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpCompletely</td><td>5.06%</td>
+
<td>ReadAllEmpCompletely</td><td>12.18%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpCompletelyJoinedReadOnly</td><td>-0.83%</td>
+
<td>ReadAllEmpCompletelyJoinedReadOnly</td><td>16.05%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllEmpCompletelyJoined</td><td>2.31%</td>
+
<td>ReadAllEmpCompletelyJoined</td><td>14.00%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllProjectReadOnly</td><td>0.50%</td>
+
<td>ReadAllProjectReadOnly</td><td>15.79%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllProject</td><td>0.41%</td>
+
<td>ReadAllProject</td><td>17.56%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllSmallProjectReadOnly</td><td>0.64%</td>
+
<td>ReadAllSmallProjectReadOnly</td><td>15.47%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllSmallProject</td><td>0.69%</td>
+
<td>ReadAllSmallProject</td><td>16.71%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllLargeProjectReadOnly</td><td>1.21%</td>
+
<td>ReadAllLargeProjectReadOnly</td><td>15.55%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadAllLargeProject</td><td>1.39%</td>
+
<td>ReadAllLargeProject</td><td>17.55%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectAddress</td><td>7.72%</td>
+
<td>ReadObjectAddress</td><td>14.46%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectGetAddress</td><td>26.28%</td>
+
<td>ReadObjectGetAddress</td><td>31.18%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectAddressJPQLReadOnly</td><td>2.41%</td>
+
<td>ReadObjectAddressJPQLReadOnly</td><td>25.35%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectAddressJPQL</td><td>2.35%</td>
+
<td>ReadObjectAddressJPQL</td><td>27.04%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectAddressNamedQuery</td><td>2.71%</td>
+
<td>ReadObjectAddressNamedQuery</td><td>34.03%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectEmp</td><td>24.40%</td>
+
<td>ReadObjectEmp</td><td>31.24%</td>
 
</tr><tr>
 
</tr><tr>
<td>ReadObjectCompletelyEmp</td><td>19.37%</td>
+
<td>ReadObjectCompletelyEmp</td><td>24.97%</td>
 
</tr><tr></tr><tr>
 
</tr><tr></tr><tr>
<td>InsertAddress</td><td>0.30%</td>
+
<td>InsertAddress</td><td>8.48%</td>
 
</tr><tr>
 
</tr><tr>
<td>InsertDeleteAddress</td><td>-0.64%</td>
+
<td>InsertDeleteAddress</td><td>11.45%</td>
 
</tr><tr>
 
</tr><tr>
<td>MassInsertAddress</td><td>1.69%</td>
+
<td>MassInsertAddress</td><td>7.29%</td>
 
</tr><tr>
 
</tr><tr>
<td>InsertEmp</td><td>4.46%</td>
 
 
</tr><tr>
 
</tr><tr>
<td>InsertDeleteEmp</td><td>-2.10%</td>
+
<td>UpdateAddress</td><td>22.72%</td>
 +
</tr><tr>
 +
<td>InsertEmp</td><td>24.39%</td>
 +
</tr><tr>
 +
<td>InsertDeleteEmp</td><td>n/a</td>
 
</tr>
 
</tr>
 +
</tr><tr>
 +
<td>UpdateEmployee</td><td>63.62%</td>
 +
</tr><tr>
 +
</tr><tr>
 +
<td>ComplexUpdateEmployee</td><td>19.01%</td>
 +
</tr><tr>
 
</table>
 
</table>
  

Revision as of 11:45, 11 March 2009

Performance Test Results Comparing EclipseLink 1.1 vs EclipseLink 1.0

This results show the % difference in performance between EclipseLink 1.1 and EclipseLink 1.0 on various performance tests.

Each test consisted of running the test in a single threaded loop and recording the number of operations in a set amount of time. The each test was run 5 times, the max and min result rejected, and the middle 3 results were averaged to obtain the result and compute the % standard deviation. The average result was then compared with the run from the other version to compute the % difference. The tests were run on a multi-CPU AMD Linux machine, accessing an Oracle 10.2 database running on Linux.

JPA Performance Regression Test Suite

This table shows the % difference between 1.1 and 1.0, a positive % means an increase in performance by x% of the 1.0 results. The tests can have a +/- variance of 2% some any increase or decrease by less than 2% is not significant.

In general the performance between 1.0 and 1.1 improved slightly, with some use cases improving significantly. These results are meant for development to verify the performance of the release, actually performance values for user applications will vary based on the hardware, environment, database, JVM, and object model.

The ReadAll tests created a JPQL Query and called getResultList() on it. The ReadObject tests either called the find() or getReference() operation, or created a JPQL Query and called getSingleResult(). The ReadOnly tests used the "eclipselink-read-only" Query hint. The insert tests performed a persist() the delete tests performed a remove(), the update tests performed a find() on the object and changed it and committed the transaction.

Tests were run in JSE 1.5, using the EclipseLink weaving agent, and default caching, and accessed an Oracle 10.2 database.

As these were single threaded performance tests, the database portion of the total test time was significant for most tests. The database access is important to measure in a performance test, but it is also useful to be able to isolate the JPA performance. To do this, the same tests were run also using an emulated database that removes the database cost for the tests. The emulated tests general show the same difference to the database tests, but the % difference is much higher. The pure JPA performance is important, because in a multi-threaded environment with the database on a separate machine, the performance of the mid-tier machine is determined by the JPA/client performance.

Database Results

</tr>
Test% Dif
ReadAllAddressReadOnly0.55%
ReadAllAddress1.92%
ReadAllAddressSimpleJPQLReadOnly4.89%
ReadAllAddressSimpleJPQL4.34%
ReadAllAddressNamedQueryReadOnly4.87%
ReadAllAddressNamedQuery5.34%
ReadAllEmpReadOnly-0.07%
ReadAllEmp3.34%
ReadAllEmpComplexJPQLReadOnly2.42%
ReadAllEmpComplexJPQL3.33%
ReadAllEmpComplexDynJPQLReadOnly-1.88%
ReadAllEmpCompletelyReadOnly0.51%
ReadAllEmpCompletely5.06%
ReadAllEmpCompletelyJoinedReadOnly-0.83%
ReadAllEmpCompletelyJoined2.31%
ReadAllProjectReadOnly0.50%
ReadAllProject0.41%
ReadAllSmallProjectReadOnly0.64%
ReadAllSmallProject0.69%
ReadAllLargeProjectReadOnly1.21%
ReadAllLargeProject1.39%
ReadObjectAddress7.72%
ReadObjectGetAddress26.28%
ReadObjectAddressJPQLReadOnly2.41%
ReadObjectAddressJPQL2.35%
ReadObjectAddressNamedQuery2.71%
ReadObjectEmp24.40%
ReadObjectCompletelyEmp19.37%
InsertAddress0.30%
InsertDeleteAddress-0.64%
MassInsertAddress1.69%
UpdateAddressn/a
InsertEmp4.46%
InsertDeleteEmp-2.10%
UpdateEmployeen/a
ComplexUpdateEmployeen/a

</td> <td>

Emulated Database Results

</tr>
Test% Dif
ReadAllAddressReadOnly8.33%
ReadAllAddress21.37%
ReadAllAddressSimpleJPQLReadOnly21.04%
ReadAllAddressSimpleJPQL22.29%
ReadAllAddressNamedQueryReadOnly21.32%
ReadAllAddressNamedQuery31.28%
ReadAllEmpReadOnly14.62%
ReadAllEmp25.07%
ReadAllEmpComplexJPQLReadOnly23.07%
ReadAllEmpComplexJPQL25.95%
ReadAllEmpComplexDynJPQLReadOnly0.21%
ReadAllEmpCompletelyReadOnly12.29%
ReadAllEmpCompletely12.18%
ReadAllEmpCompletelyJoinedReadOnly16.05%
ReadAllEmpCompletelyJoined14.00%
ReadAllProjectReadOnly15.79%
ReadAllProject17.56%
ReadAllSmallProjectReadOnly15.47%
ReadAllSmallProject16.71%
ReadAllLargeProjectReadOnly15.55%
ReadAllLargeProject17.55%
ReadObjectAddress14.46%
ReadObjectGetAddress31.18%
ReadObjectAddressJPQLReadOnly25.35%
ReadObjectAddressJPQL27.04%
ReadObjectAddressNamedQuery34.03%
ReadObjectEmp31.24%
ReadObjectCompletelyEmp24.97%
InsertAddress8.48%
InsertDeleteAddress11.45%
MassInsertAddress7.29%
UpdateAddress22.72%
InsertEmp24.39%
InsertDeleteEmpn/a
UpdateEmployee63.62%
ComplexUpdateEmployee19.01%

</td> </tr> </table>

Back to the top