2009-07-14 4 views
2

빈 PHP 함수 호출과 관련된 '비용'은 무엇입니까? 주요 목적은 CMS가 보안, 액세스 권한, 사후 처리, 타이밍, http (s) 등과 같은 것을 처리하기 위해 수명이 다한 여러 시점에 포함 된 모듈 이벤트를 트리거하는 것입니다. 각 전화가 수십 번 호출되는 12 개 이상의 모듈이있을 수 있기 때문에 총 호출 수는 페이지로드마다 어느 정도까지 수백 및 수천까지 도달합니다.PHP에서 빈 함수 수행

초기 모듈은 기본적으로 해고 전달 된 데이터를 처리하고 어떤 트리거 이벤트 처리 객체로 대체됩니다 다음 코드를 다음과 같이 표시됩니다해야 결국

function trigger ($trigger_name, $data=false) 
{ 
    return false; 
} 

이 문제가 될 것입니다 및 대신 무의미한 함수 호출의 양을 줄이기 위해 트리거를 사전 등록하는 모듈 시스템에서 작업합니까?

답변

2

나는이 링크에서 발견 :

http://phplens.com/lens/php-book/optimizing-debugging-php.php

하나 개의 매개 변수와 빈 함수의 본체와 함수 호출은 7 ~ 8 $ 변수를 증가시키는 연산 쯤을하고 같은 시간 정도 걸립니다. 유사한 메소드 호출은 물론 약 15 $ localvar ++ 연산입니다.

업데이트 : 2004 년 7 월 11 일 : 위의 테스트는 약 3 년 전의 PHP 4.0.4에서 수행되었습니다. 필자는 PHP4.3.3에서 다시 을 테스트했으며 함수 호출은 약 20 $ localvar ++ 연산을 필요로하고 메소드 호출은 약 30 $ localvar ++ 연산을 필요로합니다. $ localvar ++가 더 빨리 실행되거나 함수가 더 느리기 때문일 수 있습니다.

2

PHP의 누락 된 이벤트 지원을 위해 this work around과 같은 이벤트 성이 더 있습니다. 사전 등록으로 생각했던 것과 비슷합니다.

그렇게 할 수 없거나하지 않으려한다면, 빈 함수 호출이 많은 성능을 저하시키지 않습니다 (수천 개가 될지 모르지만). 몇 가지 기본 프로파일 링을 수행하여 시간을 페이지에 제공하는 시간을 확인합니다. 빈 함수가 상당한 시간이 걸리는 것으로 나타나면 걱정할 것입니다.

페이지가 너무 복잡해서 많은 트리거가 필요하고 다른 더 많은 병목 현상이없는 경우를 상상할 수 없습니다. 즉, 페이지가 계속 진행되면 추가 된 트리거가 훨씬 덜 중요 해집니다.

관련 문제