여러 객체 또는 빅 데이터 구조를 사용할 때 성능을 향상시키는 방법은 지연로드 또는 할당을 사용하는 것입니다 (구현). 시간 -타임 작업은 가능한 한 가능한 한 단축되었으며, 결코 실현되지 않았습니다. 나는 Java에서 지연된 로딩 기술이 어떻게 사용되는지 설명하기 위해 몇 가지 예를 사용하고 더 쉬운 (사용) 및 다른 언어의 핵심 언어의 일부로 지침을 제공합니다.
사용 시나리오는 jtable을 통해 도메인 객체에 가치가있는 수백 개의 메타 데이터 및 측정 객체를 표시하는 것입니다. 일부 메타 데이터만이 양식에 표시 되더라도 메모리에 두 가지 유형의 객체를 저장할 수있는 도메인 객체를 초기화하십시오. 이 양식을 작성하는 데 몇 초가 걸리며 (그러나) 수백 개의 (데이터)를 다시 수락 할 수 있습니다. 분석을 수행 한 후 실현을 향상 시켰으며 다음과 같이 보입니다.
공개 클래스 DomainObject {Private Final DataParser Parser <String> Header = New Hashmap <(); = aparser;} public string getheaderfield (문자열 이름) {// 여기서 여기 우리는 헤더 맵 (header.isempl ()) {header.addall (parser.header ());} return header.get (name) ;} public iterable <daterable <data> getMeasurementValues () {// 다시 게으른로드하고 (data.isempty ()) {data.addall (parser.measurements ());} 데이터를 반환합니다.
이 개선은 디스플레이 시간의 진입을 향상시키고 처리 빅 데이터 항목의 (기능)를 크게 향상시킵니다. 모든 데이터로드는 누군가가 측정 측정을보고 특정 항목을 두 번 클릭하려는 경우에만 발생합니다.
상자가 해체 된 후 일종의 Java가 지연됩니다.
// 비용이 필요할 때만 실행되기 때문에 게으르고 빠르기 때문에 (acondition () && 비싼 오피레이션 ()) {... ...} // slow order (여전히 Lazy ed!) if (비싼 오페리 () && acondition ()) {. ..}
데이터베이스 액세스와 데이터 전송 가격이 정상적인 상황에서 상당히 높기 때문에 최대 절전 모드와 같은 긴 길이의 레이어 프레임 워크는 종종 부하를 지연시킵니다.
대부분의 언어 기능은 서라운드 지연 할당을 기반으로합니다.이 이론적 기능은 모든 구성원의 첫 번째 클래스와 같습니다. Scala는 객체 중심 언어 기능을 혼합하고 지연된 키워드를 소개하여 지연된 초기 코드는 다음과 같습니다
공개 클래스 DOM ARINOBJECT (PARSER : DATAPARSER) {// 첫 번째 액세스에서 평가 됨 프라이빗 게으른 val 헤드러 = {parser.header ()} def getheadereld (이름 : String) : s tring = {header.get (name) .getorelse ( ". ")} // 첫 번째 액세스로 평가 된 Lazy Val MesurementValues : 반복 가능한 [data] = {parser.measurements ()}}}
결론적으로
로딩 지연은 새로운 혁신적인 기술이 아니지만 빅 데이터를 다루거나 자원을 느리게 할 때 매우 유용한 도구입니다. 많은 경우에이를 사용하여 성능을 향상 시키거나 직접 사용할 수 있습니다.
코드 구현 비용을 줄일 수 있으며 (Java와 같은) 언어 지원이 좋지 않으면 사전 컴파일 및 사전 처리에서 더 많은 응답을 느낄 수 있습니다.