2010-11-21 2 views
2

쓸데없는 미세 최적화 기법을 어떻게 찾을 수 있습니까?PHP 마이크로 최적화

무엇을 피해야합니까?

+0

미세 최적화는 눈을 마비시킬 때 쓸모가 없습니다. 거대한 더미의 데이터가 거기에서 처리되는 경우에만 매우 자주 루프에서 그들을 존중하는 것이 합리적입니다. – mario

답변

9

먼저 측정하지 않고 프로파일 링 한 최적화는 쓸모가 없습니다.

PHP 코드 프로파일 :

항상 측정 (때로는 간단한 echo time()를 사용하여 코드의 병목 현상을 발견하기 쉽습니다)!

3

작동하고 읽을 수있는 코드를 작성하십시오. 느린 것을 발견하면 언제든지 profiling을 할 수 있습니다.

0

나는 자신을 인기가 없게 만들고 isset라고 말합니다.

정의되지 않은 변수를 확인하려면 isset()은 종종 응용 프로그램 논리에서 사용됩니다. 그러나 많은 사람들은 고지를 억제하려는 목적으로 만 그것을 사용합니다. 그것은 드물게 더 행렬 논리에 기여합니다. 더 구체적으로는 오류 억제 연산자 인 @을 통해 사용됩니다. 그리고 그것은 @ 느림 신화가 있기 때문입니다.

것은 신화가 아닙니다. 정의되지 않은 변수에 액세스하는 데 @을 사용하면 처리 속도가 빨라집니다. 저의 비과학적인 시험에서는 535 %으로 그렇게했습니다. 나는 그 숫자의 쓸모없는 것을 강조하기 위해 그것을 과감하게 만듭니다. 실제 응용 프로그램에서 측정하기 위해 1,000 만회가 필요하지 않기 때문입니다. ('single'따옴표의 13-14 % 토크 나이저 속도 향상은 전체 스크립트 런타임에 영향을 미치지 않습니다.) 그렇지 않으면이 성능 단점이 실제로 나타나지 않습니다. 그래서 나는 isset의 오버플로 사용에 대해 @을 피하는 것이 마이크로 최적화라고 결론 내립니다.

+0

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 집합되지 않은 변수들 외에 다른 논리 오류들을 숨길 수도 있습니다 응용 프로그램을 제대로 코딩하면 변수가 설정되어야 할 때 설정이 해제되는 경우가 거의 없습니다. –

+0

@은 단순히 느린 것 이외의 많은 이유 때문에 좋지 않습니다. 디버깅을 악몽으로 만듭니다. – GordonM

+0

@GordonM : 사실은 아닙니다. 눈에 띄는 속도 저하를 일으키는 것은'@'자체가 아니며, 통지 생성입니다. 그리고 btw, 더 많은 공지 사항을 가지고 디버깅 악몽을하지 않습니다. 그들을 억압하는 것이 가능합니다. (@ 감쇄 된 디버그 메시지는 되돌릴 수 있고, 꺼내 진 once는 결코 덮어 쓸 수 없습니다.) – mario