2011-12-13 6 views
3

는 I t이 예상되는 것이 답변 Why is Kernel#require taking such a big chunk of my application's resources?에서왜 커널 #이 가져 오기 시간의 45 %를 차지해야합니까? 내가 프로파일 얻은 내 테스트 스위트를 가속화하기위한 노력의 일환으로

Total: 1445 samples 
    650 45.0% 45.0%  1171 81.0% Kernel#require 
    261 18.1% 63.0%  261 18.1% garbage_collector 
    47 3.3% 66.3%  168 11.6% Kernel.load 
    39 2.7% 69.0%  82 5.7% Module#class_eval 
    27 1.9% 70.9%  817 56.5% ActiveSupport::Dependencies::Loadable#load_dependency 
    25 1.7% 72.6%  58 4.0% Enumerable#find 
    25 1.7% 74.3%  25 1.7% Module#constants 
    20 1.4% 75.7%  1171 81.0% Kernel#gem_original_require 
    19 1.3% 77.0%  19 1.3% File.file? 
    18 1.2% 78.3%  415 28.7% Kernel.require 
. 
. 
. 


다음,하지만 난 여기에 엄청난 수의 정말 놀랐어요. 이게 사실인가요? 우리가 그것에 대해 아무 것도하지 않겠습니까?

+0

이 앱은 Rails 앱입니까, 아니면 Rails가 아닌 앱입니까? –

+0

레일 앱입니다. –

답변

0

필요한 단계는 실제로 Ruby 응용 프로그램에 대한 AST를 작성하기 때문에 수행 할 수있는 일은 많지 않습니다. 런타임시 "구성"됩니다. 당신이해야 할 일은 이미 모든 애플리케이션 로딩이 이미 완료된 지점으로 프로파일 링을 분리하는 것입니다 (예를 들어, 한 번의 작업에 대해 몇 번의 드라이 런을 수행 한 다음 프로파일 링 실행 만). 이렇게하면 컴파일 단계가 벤치 마크에서 제외됩니다.

또한 속도 향상을 위해 수정 작업이 있었기 때문에 1.9.3이 아닌 1.9.2를 사용해야합니다.

+0

테스트 환경에서이를 어떻게 달성 할 수 있는지 명확하지 않습니다. –