Added JDBC performance test to compare to JPA
This commit is contained in:
parent
e136be5bd4
commit
8746319ca8
@ -5,7 +5,9 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemp
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntryRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCWriteUtils;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||
|
||||
@ -81,6 +84,42 @@ public class EntityPerformanceTest extends AbstractPersistenceServerServiceTest
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Autowired
|
||||
private JDBCWriteUtils jdbcWriteUtils;
|
||||
|
||||
@Test
|
||||
public void testWritePerformance() {
|
||||
var tenKEntries = generateEntries(10_000);
|
||||
|
||||
var template = dossierTemplateTesterAndProvider.provideTestTemplate("test");
|
||||
var type1 = typeProvider.testAndProvideType(template, null, "t1");
|
||||
var type2 = typeProvider.testAndProvideType(template, null, "t2");
|
||||
|
||||
List<DictionaryEntryEntity> type1Entries =
|
||||
tenKEntries.stream().map(s -> new DictionaryEntryEntity(0, s, 1, false, type1.getTypeId())).collect(Collectors.toList());
|
||||
|
||||
List<DictionaryEntryEntity> type2Entries =
|
||||
tenKEntries.stream().map(s -> new DictionaryEntryEntity(0, s, 1, false, type2.getTypeId())).collect(Collectors.toList());
|
||||
|
||||
assertThat(entryRepository.count()).isEqualTo(0);
|
||||
long t1 = System.currentTimeMillis();
|
||||
entryRepository.saveAll(type1Entries);
|
||||
long jpaTime = System.currentTimeMillis() - t1;
|
||||
assertThat(entryRepository.count()).isEqualTo(10_000);
|
||||
|
||||
t1 = System.currentTimeMillis();
|
||||
jdbcWriteUtils.saveBatch(type2Entries);
|
||||
long jdbcTime = System.currentTimeMillis() - t1;
|
||||
|
||||
assertThat(entryRepository.count()).isEqualTo(20_000);
|
||||
|
||||
assertThat(jpaTime).isGreaterThan(jdbcTime);
|
||||
|
||||
System.out.println("JPA Time: " + jpaTime + "ms for 10k entries");
|
||||
System.out.println("JDBC Time: " + jdbcTime + "ms for 10k entries");
|
||||
}
|
||||
|
||||
private List<String> generateEntries(int count) {
|
||||
List<String> entries = new ArrayList<>();
|
||||
for (var i = 1; i <= count; i++) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user