2010-07-28 6 views
2

현재 고 가용성 환경에서 작업 중이므로 성능은이 회사의 문제입니다. 나는 오늘 그들이 Perl 5.10.0을 실행하고 있음을 발견했다. 이것은 perl5101delta에 따르면리스트 할당에서 성능 회귀가있다. 이제 우리가 데비안을 사용하고 있기 때문에 업데이트가 쉽지 않으므로 업데이트 할 업데이트의 양을 알려주는 통계를 찾고 있습니다.Perl 5.10.0의 성능 회귀가 얼마나 나쁜지에 대한 벤치 마크가 있습니까?

+3

나는 그것에 대해 맹세하지는 않겠지 만, 어쨌든 데비안 패치에서 수정 된이 문제에 대한 막연한 기억이 있습니다. 업스트림에서 변경된 내용을 확인하려면 데비안 설명서를 확인하십시오. – Quentin

+0

@David Dorward 데비안은 5.10.0에 "알 수없는 오류"문제 (debian bug 488088, Perl RT # 49472)에 대한 수정 사항을 백 포트했지만 목록 할당 수정의 백 포트를 알지 못합니다. 변경 내역에서 그 기호를 확인하십시오. – hobbs

답변

7

다른 사람들의 코드 벤치 마크는 다른 사람들의 코드 차이점 만 보여줍니다.

"고 가용성 환경"의 성능을 정량화하는 데 사용하는 여러 가지 벤치 마크가 이미 있다고 가정합니다.이 벤치 마크는 특정 페이지에 대해 수행 할 수있는 초당 현재 요청 수를 보여줍니다 (웹 사이트) 또는 중요 모듈에서 특정 가시성이 높은 서브 루틴에 대한 서브 루틴 호출 수를 지정합니다.

아직 그런 것이 없다면 시스템의 현재 성능을 그대로 추적 할 수있는 코드를 만들 것을 제안합니다. 특히 가장 중요한 것으로 간주되는 비트 또는 성능이 저하 된 비트 성능은 회사에 부정적인 영향을 미칩니다.

많은 코드가 IO 바인딩 될 수 있으며 참조하는 회귀는 무시할 수 있습니다. 대부분의 서브 루틴 호출 및 매개 변수 저글링에 영향을 줄 수 있도록 목록 할당을 고려합니다. 가장 귀중한 코드가 데이터베이스에서 데이터를보고하기를 기다리는 데 오랜 시간을 소비하는 경우 위 회귀는 무시해도 좋습니다.

코드를 벤치마킹하고 현재 성능을 측정하는 것이 가장 좋은 방법인지 확인하는 좋은 방법입니다.

특정 버전을 사용하거나 사용하지 않으려는 특정 버전이 없으면 마이그레이션 할 모든 버전을 App :: perlbrew를 사용하여 설치할 수 있습니다. App :: cpanm을 사용하여 벤치 마크를 수행하고 "단순히"벤치 마크/테스트 스위트를 실행하는 데 필요한 모듈.

추가 보너스로, 당신은 또한 펄의 개발 버전을 추적하고 그 시점에서 다음 주요 릴리스하기 전에 를 고정 할 수 있음을 회귀 분석을 위해 perl5의-포터에 귀중한 피드백을 제공 할 수 있습니다.

perl5-porters는 기존 코드가 손상되지 않도록 보장하기 위해 많은 시간이 걸리지 만 몇 가지 주요 릴리스가있을 때마다 약 사용 중지가 이루어지며 일이 중단되고 수행 여부를 알 수있는 유일한 방법입니다. 코드를 테스트 해 보는 것이 좋습니다.

추가 :

use Benchmark qw/:all/; 
sub test_this { 
    my ($a,$b,@c) = @_; 
    1; 
} 
timethis(10_000_000, "test_this(1..10);"); 

펄 5.10 펄 동안 그 작업을 수행 : 회귀 펄의 "목록 지정에 측정 가능한 성능 저하"에 대해 구체적인 질문을 해결하기 위해, 당신은과 perlbrew 및 벤치 마크,이를 통해 다양한 Perls을 설치할 수있을뿐 5.10.1 또는 다른 perls을 참조하십시오.

내 컴퓨터의 경우 5.10.1은 540k/초이고 5.10.0은 498k/초입니다.

+0

당신이 바로 우리 자신의 코드를 벤치마킹하는 것이 솔루션 일 것이지만 복잡한 환경 (perlbrew 포함)에도 perl 5.10.1을 설치하는 데 많은 노력이 필요합니다. 심지어 문제가 매우 거친 방식으로 얼마나 나쁜지 지적합니다. – Mithaldu

+0

의견을 주소로 업데이트했습니다. – mfontani

+0

그래, 그게 내가 찾고있는 정보입니다. 감사. – Mithaldu

관련 문제