2010-12-25 2 views
2

일부 식별자를 조회 할 수있는 메서드가 있으므로 본질적으로 SQL 쿼리를 실행하고 값을 다시 전달할 수 있습니다.정적 메서드를 사용하여 일반적으로 사용되는 메서드의 성능을 향상시킬 수 있습니까?

현재 정적 인 것은 아닙니다. 성능 관점에서 볼 때 객체를 정적으로 만들면 즉, 메모리를 적게 사용하고 객체를 인스턴스화하는 데 필요한 시간을 절약하는 것이 맞습니까? 또는 이러한 고려 사항이 실제로 중요하지 않습니다.

+5

SQL을 최적화하는 방법을 찾는 것이 내 의견으로는 여기에 훨씬 더 많은 시간을 할애 할 것입니다. –

+0

아마도 데이터베이스를 계속 방문하지 않도록 결과를 캐시하는 방법을 찾고 있습니까? 그렇다면 싱글 톤 패턴을 살펴 보거나 캐싱 프레임 워크를 사용하십시오. –

답변

7

정적 메서드를 사용하는 이유는 명확성이 향상된다고 생각하는 경우입니다.

정적을 사용하면 8 바이트의 메모리를 얻을 수 있습니다 (하나의 참조).이 메모리의 값은 1 센트의 약 10,000 번째입니다. 정적 호출을 사용하면 1ns가 절약되고 SQL 쿼리는 10ms 걸릴 수 있으므로 차이는 10,000,000 번 이상입니다.

99 %의 경우 정적을 사용하면 단어를 입력하는 데 드는 비용보다 적은 비용을 절약 할 수 있습니다. 즉, 단어를 입력 할 시간 값은이 저장 될 메모리보다 큰 입니다. 프로그램을 더 명확하게 만든다면 정적을 사용하십시오. 예 : 유틸리티 메소드 작성 용.

+1

고마워, 그게 아주 설득력있는 대답이야. – Ankur

+1

또는 단어를 입력 한 편집기를 사용하여 다시 입력하는 시간을 낭비하지 않아도됩니다. =) – Malabarba

+0

C#에서 작업하는 경우 Microsoft.Performance에서 "정적으로 표시"FXCop 규칙을 만나야합니다. http://msdn.microsoft.com/en-us/library/ms245046.aspx "메서드를 표시하면 비가 상 호출 사이트를 내보내는 것은 각 호출에 대해 런타임에 현재 객체 포인터가 null이 아닌지 확인하는 것을 방지하므로 성능에 대한 측정 가능한 성능 이득을 얻을 수 있습니다. 민감한 코드. " Java (및 Android)에서 이것이 문제가되지 않습니까? 감사. – AnAurelian

8

연습에 차이가 없습니다. 특히 SQL 쿼리가 Java 메소드 호출보다 훨씬 많은 시간이 걸릴 것이기 때문에 특히 그렇습니다.

메모리 사용에 관해서는 정적 인 방법으로 메모리를 0 바이트로 늘릴 수 있습니다.

+1

+1 - 실제로 SQL 쿼리 자체가 "최적화"에 대해 생각하고있는 메서드 호출보다 10,000 배 이상 오래 걸릴 것입니다. –

+0

정적 메서드 호출의 경우 VM은 스택에'this '를 저장할 필요가 없으므로 일부 메모리는 절약 할 수 있지만 JIT 컴파일러는'JIT 컴파일러를 사용하지 않는 모든 메소드에 대해이 옵션을 완벽하게 최적화 할 수 있습니다. 이'. –

관련 문제