2014-02-19 4 views
1

mod-perl을 사용하고 있습니다. 나는 모든 실행을 위해 변수가 생성되지 않는다는 인상을 받고 있습니다. 즉, 우리가 해시 변수를 생성한다면, 그 변수는 한 번 생성되고 후속 실행을 위해 아파치의 메모리 캐시에 남아있게됩니다.Mod-perl과 변수 - 속도가 빨라 집니까?

그럼 내 질문은 mod-perl에서 2 개 미만의 실행 속도에 차이가있을 것입니까?

Module1 
.... 
.... 
our %myhash = qw (list of key value); 
... 
.... 
sub fun() { 
    if(exists $myhash{'key'}) { 
    ................... 
    return ; 
} 

Module2 
..... 
..... 
sub fun() { 
    my %myhash = qw (list of key value); 
    if(exists $myhash{'key'}) { 
    ................... 
    return ; 
} 

나는 각 실행에 대해 한 번이 함수를 호출하고있는 경우 하나의 모드 - 펄에 실행 속도의 기간에 더 나은 무엇입니까?

답변

0

Module1은 한 번 생성 된 전역 변수를 생성하므로 서브 루틴이 호출 될 때마다 생성되는 것이 아니라 서브 루틴 (들)에 의해 액세스 될 수 있습니다.

+0

이 기능을 한 번 실행하면 어떻게됩니까? 두 번이나? – virus

+0

그 경우에는 차이가 없습니다. 사용 사례에 따라 다릅니다. 종종 프로그램의 유지 보수성에 큰 이점을 제공하는 일부 변수가 전 세계적으로 유지됩니다. 그러나, 나는 일반적으로 세계적인 용기를 최소한으로 유지하려고 노력한다. – HackerKarma

1

전역 변수와 패키지 범위를 포함한 모든 정적 변수는 한 번만 초기화됩니다. 따라서 많은 요청에서 사용될 대규모 데이터 구조가 있다면, 정적으로 초기화하는 것이 훨씬 더 효율적입니다.

'our'를 사용하여 선언 할 필요가 없습니다. 하나의 패키지에서만 참조되는 경우 이름 충돌의 위험을 최소화하기 위해 '내'(물론 모든 하위 제외)를 사용할 수 있습니다.