2015-01-26 2 views
-1

String (정적 변수)의 큰 목록을로드하고이 목록을 사용하는 함수를 정의하는 Utils 클래스가 있습니다.코드를 더 빨리 만들기 위해 객체 인스턴스화하기

이 기능은 다른 클래스 솔루션에서 사용합니다. 현재 Utils.my_function을 사용할 때마다 (큰 for 루프에서 수천 번 호출되기 때문에) 호출하고 있습니다. 솔루션의 Utils를 인스턴스화하는 것이 더 빠릅니까? (의 Utils에 정의 된 단어 목록은 한 번만 정의 될 것인가?)

+1

잘하면 곧 도움을 얻을 수 있지만 나에게는 머리를 감싸는 것이 힘든 일입니다. 어떤 코드와 자세한 내용은 어떤 식 으로든 도움이 될 것입니다. –

+1

문자열 목록이 정적이라면 왜'static'으로 만들고'my_function'을 정적으로 만들지 않겠습니까? 그런 다음 첫 번째 호출 후에 개인 정적 변수에 결과를 캐시 할 수 있습니다. –

+0

내 코드를 넣을 수는 없지만 기본적으로 클래스의 함수가 있습니다. 텍스트 파일을 읽는 솔루션입니다. 이 파일의 모든 행에 대해이 파일에 대한 작업을 수행하여 일부 단어를 제거해야합니다. 각 행에 대해 : Utils.my_function (line)을 호출하여 단어가 있으면 제거합니다. 제거 할 단어 목록은 Utils에 정의되어 있습니다. Utils.my_function의 모든 호출에 대한 단어 목록을 작성하지 않도록 솔루션의 Utils를 인스턴스화하는 것이 더 나은지 여부를 알고 싶습니다. 대신 Utils 유틸리티를 사용하면이 목록을 한 번로드하고 util.my_function을 호출합니다. – giulio

답변

1

문자열 (정적 변수) 많은 목록 ... 이 경우 Utils에 정의 된 단어 목록은 한 번만 정의 될 ?

정의에 따르면 정적 변수는 한 번만로드됩니다. 그래서 이미 당신이 할 수있는 가장 빠른 것입니다.

EDIT : Java를 코딩하는 개발자는 똑똑합니다. JVM은 배열이 자주 액세스되는 것을 감지 할 수 있으며 정적 또는 인스턴스 변수인지 여부에 관계없이 작업을 자주 최적화합니다. 그러나 나는 이것보다 더 많은 정보를 줄 수는 없으며, 아마도 일부 자바 전문가가 당신에게 더 정확한 대답을 줄 수 있습니다.

0

음, 이미 지적했듯이 static은 어쨌든 한 번만 호출됩니다. 당신이 할 수있는 또 다른 일괄 처리입니다 - http://java.dzone.com/articles/batch-processing-best

한 줄에 한 세트의 라인을 호출 한 다음 함수를 수행하고 다음 세트로 이동하는 등 다른 방법으로 프로파일 링해야합니다. 귀하의 애플 리케이션은 얼마나 많은 라인이 애플 리케이션에 대한 좋은 응답을 얻을 것이라고 볼 수 있습니다.

관련 문제