Skip to content

15. 性能

下面我们展示 [JUnitTestPushTheLimits] 测试(2,500 个类别,5,000 种产品)在 24 种可能配置(6 种 DBMS * (1 种 JDBC + 3 种 JPA))下的执行时间。这些数字的绝对值本身并无实际意义,其价值仅在于相互比较。 我们不做任何结论,留待读者自行判断。请注意,由于我们运行的是适用于所有 24 种配置的通用测试,因此并未利用 JPA 实现的特定功能。这可能会改变下文的结果。

针对每种DBMS,我们先删除了[dbproduitscategories]数据库,随后重建该数据库以进行四项连续测试。

MySQL 5 社区版

实现
执行配置
持续时间(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
47.555
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
94,919
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
91,571
JPA OpenJPA
spring-jpa-generic-JUnitTestPushTheLimits-openjpa
100,387

Oracle Express 11g Release 2

实施
运行配置
耗时(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
108.590
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
154,883
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
143,010
JPA OpenJPA
spring-jpa-generic- JUnitTestPushTheLimits-openjpa
90,874

PostgreSQL 9.4

实现
运行配置
耗时(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
86.074
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
203,358
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
183,995
JPA OpenJpa
spring-jpa-generic-JUnitTestPushTheLimits-openjpa
197,068

IBM DB2 Express-C 10.5

实施
运行配置
耗时(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
285,000
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
332,247
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
371,619
JPA OpenJPA
spring-jpa-generic-JUnitTestPushTheLimits-openjpa
253,953

SQL Server 2014 精简版

实现
运行配置
耗时(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
81.437
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
216,15
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits- hibernate-eclipselink
214.398
JPA OpenJPA
spring-jpa-generic-JUnitTestPushTheLimits-openjpa
236,691

Firebird 2.5.4

实现
运行配置
耗时(秒)
JDBC
spring-jdbc-generic-04-JUnitTestPushTheLimits
132.305
JPA Hibernate
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
304,458
JPA EclipseLink
spring-jpa-generic-JUnitTestPushTheLimits-hibernate-eclipselink
257,555
JPA OpenJPA
spring-jpa-generic-JUnitTestPushTheLimits-openjpa
363,546