Основна сутність com.streamlined.dataprocessor.entity.Person Фізична особа
Атрибути
- ім'я name
- день народження birthday
- стать sex
- колір очей eyeColor
- колір волосся hairColor
- вага weight
- зріст height
- країна походження countryOfOrigin
- країна громадянства citizenship
- перелік улюблених страв favoriteMeals (строки, розділені комами)
Атрибути
- назва name
- континент розташування continent
- столиця capital
- населення population
- площа square
https://github.com/streamlined2/data-processor/tree/main/src/main/resources
https://github.com/streamlined2/data-processor/tree/main/src/main/resources/data
Тестовий набір був попередньо створений за допомогою класу com.streamlined.dataprocessor.datagenerator.PersonDataGenerator із параметрами PERSON_COUNT (загальна кількість сутностей) 1_000_000, та FILE_COUNT (кількість файлів) 100.
Вимірювання виконане за допомогою тесту com.streamlined.dataprocessor.parser.MultithreadParsePerformanceTest.measureParseTime
- Number of threads 1, parsing duration 10566 msec
- Number of threads 1, parsing duration 8124 msec
- Number of threads 2, parsing duration 5235 msec
- Number of threads 4, parsing duration 3231 msec
- Number of threads 8, parsing duration 2840 msec
Збільшення кількості потоків вдвічі призводить до прискорення парсингу, але швидкість зростає повільніше, ніж вдвічі, через обмеження інших складових системи і втрати часу на координацію потоків.
Час парсингу значень однієї властивості сутності для такого ж набору даних за допомогою Jackson Streaming API (тест com.streamlined.dataprocessor.parser.MultithreadParsePerformanceTest.measureStreamingParseTime) значно менший, що свідчить про перевагу даного методу. Крім того, він потребує лише фіксований обсяг пам'яті буферу для збереження даних перед опрацюванням, без виділення пам'яті для створення повної колекції сутностей.
- Number of threads 1, parsing duration 4671 msec via Streaming API
- Number of threads 1, parsing duration 4616 msec via Streaming API
- Number of threads 2, parsing duration 2461 msec via Streaming API
- Number of threads 4, parsing duration 1721 msec via Streaming API
- Number of threads 8, parsing duration 1247 msec via Streaming API