2014-01-21 3 views
2

DOM을 사용하여 작업하고있는 상황 별 XML 파서를 기준으로 foreach 루프에 관한 질문이 있습니다. 본질적으로 XML 내에서 하드 코딩 된 값을 찾습니다. 누구든지 실제로 호출되지 않는 foreach 루프의 시스템 성능 영향을 알고 있습니까?foreach 루프 성능에 미사용?

단지 참조 용으로, 적어도 두 개의 이산 형식의 XML 파일을보고 있는데, 각 파일에는 여러 개의 루프가 있고 각 파일을 보는 데 동일한 구문 분석 파일을 사용하고 싶습니다.

예를 들어, 하나의 기능을 가진 트리를보고, 다른 기능이있는 트리를 볼 수 있습니다. .php 파일을 실행하여 결과에 모두 응답하지만 정보를 보유하고 있지만 둘 중 하나를 적절하게 선택하면 어떻게됩니까?

예를 들어 foreach ($ bar는 $ bar)를 호출했지만 $ bar가 없으면 foreach 루프에서 실행되는 코드는 어떻게됩니까? 나는 그것이 오류를 출력 할 것이라고 확신한다. (비록보고 측면에서는 억제 될 것이지만) PHP 내부의 코드를 분석 할 때 PHP의 성능이 저하 될까?

다소 불투명합니다. 아마 어딘가에 잘못된 용어를 사용 했으므로 요약을 할 것입니다.

존재하지 않는 연관 배열과 관련된 foreach 루프는 성능에 영향을 미칩니 까? 주요있을 것 http://www.ibm.com/developerworks/library/os-xmldomphp/

거기 "목록이"예에 공급되는 XML 파일에없는 책 있었 :

는 참고로,이 페이지의 목록이 아래의 예와 유사한 무언가를 할 문제가 있거나, PHP가 단순히 멋지게 움직일 수 있습니다 (치명적이지 않은 오류가 내 용도로 적합합니다). 그렇지 않으면 성능에 문제가 있습니까?

+0

_ "나는 foreach ($ bar로 $ foo)를 호출했으나 아무런 의미가없는 $ bar"_가 없습니다. '$ bar'는 foreach 루프가 데이터에서 작동하기 때문에 수명에만옵니다. '$ foo'가 빈 배열이면 무엇을 할 것인가? – CBroe

+3

언제나 그렇듯이 : 당신이 여기서 염려하고있는 것은 "마이크로 최적화"입니다. 실제 사용 사례의 99.999 ... 99 %는 전혀 관련성이 없습니다. – CBroe

+0

두 가지 방법으로 구현하고, 차이를 측정하고, 성능 요구 사항에 맞는 접근 방식을 선택하십시오. – bishop

답변

1

실제로 상황을 이해하면 실행 목적으로 실제로 루프 내에서 foreach()을 만들지 않을 것입니다.

성공적 저는 개인적으로 모든 오류를 표시하는 환경에서 개발하는 foreach()

를 입력하면 그것을 처리 할 수 ​​있도록하지만, 코드가 디스크 공간의 측면에서 차지하는 실제 바이트 메모리에로드됩니다

그래서 코드가 프로덕션에서 견고 함을 보장 할 수 있습니다.

나는 배열을 기대 또는 나는 일반적으로이를 구현 객체입니다 경우

// check for the existence of $foo and make sure it is loop-able 
// being loop-able means $foo is either and array or object and contains at least one item/element 
if((is_array($foo) || is_object($foo)) && count($foo) > 0) 
{ 
    foreach($foo as $bar) 
    { 
    } 
} 

전반적으로, 질문/관심사는 마이크로 최적화 때 마이크로 최적화는 아무도 승리하지와 일치한다. 향후 개발자가 쉽게 코드를 이해할 수 있는지 확인하고 필요하다고 판단되면 다시 고려하십시오.

+0

+1 설명이없는 하향 투표. – bishop

+0

@bishop you rock =) – MonkeyZeus

+0

나는 이것을 완전히 이해하고 있는지 잘 모르겠다. 하나 이상의 $ foo 배열이 있는지 확인하고 있습니까? 아니면 $ bar 항목이 있는지 확인해야합니까? –