2015-01-03 2 views
1

게임을 만들 때 모든 데이터가 캡슐화되어있어 해당 클래스의 인스턴스에서 무언가를 얻으려는 경우 getter 메서드를 호출해야한다는 것을 의미합니다. 여러 번 호출되는 렌더링 루프가 있습니다. 개체에서 단일 필드를 잡고 여러 가지 작업을 수행하기 위해 동일한 getter 메서드를 여러 번 호출해야합니다. 객체에 대한 추가 참조를 저장하는 것이 더 좋을까요? 객체를 필요로하는 클래스에서 계속 잡아 먹고 있습니까? 이 경우 생성자에서 가져 와서 수행 할 수 있습니다. 이게 말이 돼? 엄청 고마워.자바 게터 메서드 성능

+0

getter/setters와 같은 간단한 메소드가 자동으로 정렬되며 (기본적으로 35 바이트 바이트 코드 미만의 항목) 노트의 성능 영향은 없습니다. –

+0

자, 고마워. –

답변

4

다른 게시 된 답변과 성능 차이가 없음에 동의합니다.

그러나 가독성 및 모범 사례에 대한 답변에서 OP의 질문을 잘못 이해했다고 생각합니다. 그는 최상의 습관을 피하고 getter를 사용하지 않을지 묻지 않습니다. 그는 모든 라인에서 getter를 호출하는 것이 아니라 검색된 객체에 대한 로컬 참조를 만들 수 있는지/물어야하는지, 그리고 표준 세계에서 실제로 훨씬 더 읽기 쉽도록 요청하고 있습니다.

먼저 고려 :

doFooThings(service.getFoo()); 

doBarThings(service.getFoo().getBar()); 

doBazThings(service.getFoo().getBar().getBaz()); 
doMoreBazThings(service.getFoo().getBar().getBaz()); 
doOneLastAmazingBazThing(service.getFoo().getBar().getBaz()); 

가 비교 :

Foo myFoo = service.getFoo(); 
doFooThings(myFoo); 

Bar myBar = myFoo.getBar(); 
doBarThings(myBar); 

Baz myBaz = myBar.getBaz(); 
doBazThings(myBaz); 
doMoreBazThings(myBaz); 
doOneLastAmazingBazThing(myBaz); 

코드에 더 많은 소음과 들여 쓰기가있을 때 두 번째 버전은 특히 현실 세계에서, 더 많은 읽을 수 있습니다, 간결한 라인을 읽는 것이 훨씬 쉽습니다. 동일한 getter 호출이 12 번 연속으로 나타나는 것을 보는 것이 아니라 설명 적으로 이름이 지정된 로컬 변수를 참조하는 것입니다.

1

개체에 대한 추가 참조를 저장하는 것이 좋습니다. 필요로하는 수업에서 계속해서 잡아 먹는 것이 좋습니다.

번호

당신은 당신의 코드가 자주이라고 말할 특히 때문에, JIT는에 시작된다. 그것은 게터 호출이 더 간단 부하에 의해 대체 될 수 있습니다 볼 확실히 할 것이다.

JIT를 과소 평가하지 마십시오.

+0

더 효율적 일 필요는 없지만 코드를 덜 분명하게하는 대신 희박한 문자를 입력하는 것이 더 빠르다. – kirbyquerby

+0

@kirbyquerby ... 그리고 아마도 IDE는 사용할 수있다. – fge

+0

@Stephen CI think OP의 질문에 대한 오해가있을 수 있습니다, 내 대답은 아래 참조하십시오. OP, 내가 잘못하면 나를 바로 잡아라. – The111