2012-12-05 2 views
0

비 db 작업에 대한 캐싱 구현이 의미가 있습니까? 긴 코드 블록을 평가하기 위해 구현하는 것이 합리적입니까? 예를 들어, 매개 변수를 사용하는 코드 블록이 있습니다. 이 매개 변수에 따라 if/else 블록의 세탁 목록을 통해 올바른 값과 일치 할 때까지 값을 반환합니다. 필자의 경우 IN 매개 변수는 유한이며 OUT 매개 변수는 IN PARAM을 기반으로 일관성이 있습니다. 즉 'A'마다 반환 값이 'B'이고 모든 'X'값에 대해 'Z'값이 반환됩니다. 이러한 종류의 작업에는 DB 레코드가 포함되지 않습니다. 나는 캐싱을 도입함으로써 궁금해서, 나는 장기간에 걸쳐 평가에서 언제든지 줄일 수있다. 제안? 감사.Java 캐싱 평가 코드

답변

1

실행 된 코드가 너무 길거나 복잡하기 때문에 노력을 정당화 할 수있는 한 완벽합니다. Java 메소드 레벨에서 작동하는 예를 들어 http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html에있는 Spring의 캐싱 주석 지원을 참조하십시오. 그러나 비 스프링 환경에서 이러한 접근 방식을 쉽게 구현할 수 있습니다.

영향을받는 코드 블록에서 CPU가 소비되는 시간을 확인하기 위해 먼저 응용 프로그램의 프로필을 작성하여 여기에 캐싱이 적합한 지 확인해야합니다.

0

낮은 대기 시간을 어떻게 평가 하느냐에 따라 다릅니다. this presentation from Google (슬라이드 # 13)에 따르면 주 메모리에서 순차적으로 1MB를 읽는 데 약 0.25 밀리 초가 걸리며 이 많이 있습니다. 더 비싼 다른 것들은입니다. 같은 슬라이드에서 :

  • 단일 디스크 검색은 40 배 느립니다.
  • 네트워크에서 1MB의 데이터 읽기가 40 배 느립니다.
  • 디스크 1 개 메가 바이트 데이터를 읽는 120 배 느린

그래서 특정 상황에서 엄청난 도움이 될 수 있습니다 캐싱,하지만 당신은 분석을 수행하고 알고리즘 낭비가 얼마나 많은 시간을 참조하고 결정해야합니다.