문제

적은 수의 포조스와 그에 따라 작동하는 많은 도우미 방법이있는 앱에서, 더 나은 성능은 무엇입니까? 도우미 클래스를 싱글 레틀 톤으로 만들거나 방법을 정적으로 만들려면?

도움이 되었습니까?

해결책

정적 방법은 성능과 메모리가 현명하게 더 나은 것입니다.

  1. 가상 함수 호출의 (잠재적) 오버 헤드를 피하십시오.
  2. 클래스의 실제 인스턴스에 필요한 메모리를 제거합니다.
  3. 클래스를 사용할 때 클래스 인스턴스를 얻을 필요가 없습니다.

그러나 솔직히 나는 아마도 여전히 그것을 만들었을 것이다 singleton 어쨌든. 당신이 그것을하지 않음으로써 얻을 수있는 이익은 너무 작아서 모바일 환경에서도 제로 차이를 만들 수 있습니다.

다른 팁

상황을 피하고 정규 수업으로 만들 수 있습니까?

성능 문제를 무시하면 Singeltons와 정적 방법을 피하여 테스트 가능성을 향상시키는 것이 좋습니다.

싱글 톤과 정적 방법은 테스트하기가 매우 어려울 수 있습니다. 이와 관련하여 싱글 톤은 본질적으로 정적 방법이지만 이름이 다릅니다. Misko Hevery, 누가 Google 테스트 팀,이 주제에 대한 몇 가지 좋은 기사가 있습니다.

터무니없는 미세 최적화에 대해 걱정하지 마십시오. 유지 관리에 대한 걱정.

애플리케이션이 완전히 비 OO 스타일로 작성된 것처럼 들리며 대부분의 "도우미 방법"을 제거하고 작동하는 데이터를 사용하여 속한 위치에 넣는 데 많은 도움이 될 수 있습니다.

액면가로 질문을 받으면 정적 통화는 아마도 최소한의 CPU 전력이 필요할 것입니다. 그 이유는 정상 메소드가 동적 인 바운드이며 정적 메소드가 컴파일 시간으로 바인딩되는 동안 런타임을 약간 조회해야하기 때문입니다.

그렇게 말했듯이, 아마도 당신의 응용 프로그램에서는 중요하지 않을 것입니다. 차이는 정말 작습니다. 애플리케이션이 GUI, XML 렌더링, 인터넷 연결 또는 기타 외부 조작으로 어떤 일을하는 경우, 이러한 활동이 간단한 수학 조회를 큰 요인으로 왜소하게한다는 것을 알게 될 것입니다.

그렇지 않더라도 프로파일 링 중에는 응용 프로그램을 보유한 단일 병목 현상을 만날 가능성이 높아져서 메소드 조회가 아니라 자신이 한 논리를 발견 할 가능성이 높습니다. 예를 들어 해시 세트 대신 Arraylist를 사용했으며 포함 된 메소드는 비싸다.

따라서 이러한 경우의 성능은 실제로 중요하지 않으므로 설계가 약간 유연하기 때문에 정적 메소드 위의 싱글 톤 구현을 사용하는 것이 좋습니다. 당신이 제안한 선택 밖에서 나는 도우미 클래스를 완전히 떨어 뜨리고 pojo의 방법을 인화 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top