Введение
В работе широко используется bean copy, что позволяет значительно снизить нагрузку. В этой статье было проведено стресс-тестирование часто используемых инструментов копирования Bean, чтобы вы могли выбрать инструменты, которые больше подходят для вас. Эта статьяУлучшение Mica cglib - [01] Введение в копию компонента cglibВ дальнейшем эта рубрика будет постоянно пополняться.Если вам интересно, подпишитесь на нас.
инструмент для копирования бобов
- MapStruct (реализация Mapper, созданная во время компиляции)
- Selma (реализация Mapper, сгенерированная во время компиляции)
- yangtu222 - BeanUtils (генерировать байт-код реализации копии в первый раз)
- слюда (генерировать байт-код реализации копии в первый раз)
- хутул (отражение)
Модель
без преобразования типов
/**
* 来源用户
*
* @author L.cm
*/
@Data
public class FormUser {
private Long id;
private String nickName;
private Integer age;
private String phone;
private String email;
private String password;
private Integer gender;
private String avatar;
}
/**
* 转换的用户
*
* @author L.cm
*/
@Data
public class ToUser {
private String nickName;
private String phone;
private String email;
private Integer gender;
private String avatar;
}
с преобразованием типов
/**
* 附带类型转换的 用户模型
*
* @author L.cm
*/
@Data
@Accessors(chain = true)
public class FormConvertUser {
private Long id;
private String nickName;
private Integer age;
private String phone;
private String email;
private String password;
private Integer gender;
private String avatar;
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
private LocalDateTime birthday;
}
/**
* 附带类型转换的 用户模型
*
* @author L.cm
*/
@Data
@Accessors(chain = true)
public class ToConvertUser {
private String nickName;
private Integer age;
private String phone;
private String email;
private String password;
private Integer gender;
private String avatar;
private String birthday;
}
Результаты стресс-теста копии бина
окрестности
- OS: macOS Mojave
- CPU: 2.8 GHz Intel Core i5
- RAM: 8 GB 1600 MHz DDR3
- JVM: Oracle 1.8.0_201 64 bits
простая модель
Benchmark | Score | Error | Units |
---|---|---|---|
hutool | 1939.092 | 26.747 | ops/ms |
spring | 3569.035 | 39.607 | ops/ms |
cglib | 9112.785 | 560.503 | ops/ms |
mica | 17753.409 | 393.245 | ops/ms |
yangtu222 | 18201.997 | 119.189 | ops/ms |
cglibMapper | 37679.510 | 3544.624 | ops/ms |
mapStruct | 50328.045 | 529.707 | ops/ms |
selma | 200859.561 | 2370.531 | ops/ms |
с преобразованием типа (дата)
Benchmark | Score | Error | Units |
---|---|---|---|
mica | 1186.375 | 64.686 | ops/ms |
mapStruct | 1623.478 | 13.894 | ops/ms |
selma | 160020.595 | 2570.747 | ops/ms |
Модель списка (100 шт.)
Benchmark | Score | Error | Units |
---|---|---|---|
spring | 35.974 | 0.555 | ops/ms |
mica | 169.066 | 5.460 | ops/ms |
Копирование карты в bean-компонент
Benchmark | Score | Error | Units |
---|---|---|---|
hutool | 1338.551 | 16.746 | ops/ms |
mica | 13577.056 | 27.795 | ops/ms |
в заключении
иjava-object-mapper-benchmarkРезультаты испытаний оказались несколько противоречивыми.
Производительность Selma выше, чем у MapStruct, что может быть вызвано разными моделями.
Сравнение функций
Инструментарий | Нужно написать маппер | Карта поддержки | Список поддержки, набор | преобразование типов | представление |
---|---|---|---|---|---|
Selma | да | нет | нет | Требуется преобразование рукописного ввода | экстремально высокий |
MapStruct | да | нет | нет | Поддержка общих типов и сложных выражений | экстремально высокий |
bean U заменяет LS (пример изображения 222) | нет | нет | да | Требуется преобразование рукописного ввода | экстремально высокий |
mica | нет | да | да | заключается в использовании преобразования типов Spring | экстремально высокий |
Spring | нет | нет | нет | не поддерживается | высокий |
hutool | нет | да | нет | не поддерживается | высокий |
Ссылка на сайт
Исходный код этого проекта:GitHub.com/lets-mica/no…
Рекомендация с открытым исходным кодом
- Эффективная разработка микросервиса Spring Boot
mica
Набор инструментов:git ee.com/596392912/ нет… -
Avue
Волшебный фреймворк, основанный на конфигурируемости vue:git ee.com/small для git… -
pig
Самый мощный микросервис во вселенной (должен быть обязательным для архитекторов):gitee.com/log4j/pig -
SpringBlade
Полное онлайн-решение (необходимо для корпоративной разработки):git ee.com/small C/sp день… -
IJPay
Платежный SDK делает оплату у вас под рукой:git ee.com/just av en 205/IJ…
Подписывайтесь на нас
Отсканируйте QR-код выше, подробнееОсобенностиРекомендуется каждый день!