반사 속성 복사 와 Set 방법 성능 비교
사용 하 는 클래스:
org.springframework.beans.BeanUtils.copyProperties(source, target)
코드@Test
public void test() {
PriceAdjustBean adjustBean = new PriceAdjustBean();
adjustBean.setSkuId(111111);
adjustBean.setOrderId("ST2019070112064948900018");
adjustBean.setAdjustedPrice(100000L);
adjustBean.setAdjustedType(1);
long now = System.currentTimeMillis();
int count = 10000;
System.out.println(" :" + count);
for (int i = 0; i < count; i++) {
OrderPriceAdjustment orderPriceAdjustment = new OrderPriceAdjustment();
BeanUtils.copyProperties(adjustBean, orderPriceAdjustment);
}
long after = System.currentTimeMillis();
System.out.println(" :" + (after - now));
for (int i = 0; i < count; i++) {
OrderPriceAdjustment orderPriceAdjustment = new OrderPriceAdjustment();
orderPriceAdjustment.setOrderId(adjustBean.getOrderId());
orderPriceAdjustment.setSkuId(adjustBean.getSkuId());
orderPriceAdjustment.setAdjustedType(adjustBean.getAdjustedType());
orderPriceAdjustment.setAdjustedPrice(adjustBean.getAdjustedPrice());
}
long result = System.currentTimeMillis();
System.out.println("set :" + (result - after));
}
결실
순환 횟수
반사 시간 소모(ms)
시간 설정(ms)
1
491
0
10
506
0
100
487
1
1000
458
0
2000
493
0
4000
573
2
8000
541
3
10000
553
6
100000
916
19
1000000
1993
22
현재 데 이 터 는 한 번 에 실 행 된 결과 일 뿐 이 고 이 방법 은 바 텀 에서 다른 특수 처 리 를 하여 서비스 가 시 작 된 후에 하나의 속성 복사 로 시간 이 상대 적 으로 낮 게 유지 된다.자세 한 내용 은
CachedIntrospectionResults
류 참조.결론.
Set 방법의 소모 시간 은 반사 처리 의 소모 시간 보다 현저히 적다.
상기 데이터 세트 의 결과 에서 알 수 있 듯 이 이런 반사 적 인 처 리 는 시간 소모 가 매우 뚜렷 하 다.데이터 양 이 적은 상황 에서 도 이런 처리 방식 코드 는 매우 정연 하고 간결 해 보이 지만
,
.또한 빈 유 틸 리 스 의 복사 본 은 간결 하 게 써 서 실 행 된 후에 우 리 는 얼마나 많은 속성 이 복사 되 었 는 지 뚜렷하게 알 수 없다.코드 의 간결 함 을 추구 하기 위해 성능 문 제 를 소홀히 해 서 는 안 된다.흔히 비교적 심각 한 성능 문 제 는 이런 작은 문제 가 쌓 여 작은 문 제 를 방지 하 는 것 이다.
물론
존재 에는 반드시 일정한 의미 가 있다.일부 프레임 워 크 구조 에서 통용 되 는 코드 는 이런 방식 을 피 할 수 없 을 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue 단일 페이지에 여러 개의 echarts 도표가 있을 때의 공용 코드 쓰기html에서: 데이터 처리는 말할 필요가 없다.응, 직접 그림을 그려: 공통 섹션: 이 페이지를 떠날 때 파괴: 추가 정보: Vue + Echarts 차트 표시 및 동적 렌더링 준비 작업 echarts 의존 설치 n...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.