Конкурс производительности Java Bean Copy

Java

Введение

В работе широко используется bean copy, что позволяет значительно снизить нагрузку. В этой статье было проведено стресс-тестирование часто используемых инструментов копирования Bean, чтобы вы могли выбрать инструменты, которые больше подходят для вас. Эта статьяУлучшение Mica cglib - [01] Введение в копию компонента cglibВ дальнейшем эта рубрика будет постоянно пополняться.Если вам интересно, подпишитесь на нас.

инструмент для копирования бобов

Модель

без преобразования типов

/**
 * 来源用户
 *
 * @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 BootmicaНабор инструментов: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…

Подписывайтесь на нас

如梦技术-公众号.jpg

Отсканируйте QR-код выше, подробнееОсобенностиРекомендуется каждый день!