>백엔드 개발 >PHP 튜토리얼 >참조에 의한 전달이 실제로 PHP의 성능을 향상합니까?

참조에 의한 전달이 실제로 PHP의 성능을 향상합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-09 04:59:02401검색

Does Pass-by-Reference Actually Improve Performance in PHP?

PHP의 Pass-by-Reference 및 성능: 신화 폭로

PHP에서 참조로 함수 매개변수를 전달하는 것은 논쟁의 대상이었습니다. , 일부 추측에서는 성능에 영향을 미칠 수 있습니다. 참조를 사용하면 함수가 해당 범위 밖의 변수를 수정할 수 있지만 반드시 속도가 향상되는 것은 아닙니다.

쓰기 시 복사 메커니즘

PHP는 "쓰기 시 복사"를 사용합니다. 객체 및 배열 복사본을 최소화하는 메커니즘입니다. 이러한 객체는 수정될 때만 복사됩니다. 따라서 변경 없이 매개변수만 사용하는 함수의 경우 동작은 참조별 전달과 유사합니다.

성능 분석

오해를 명확히 하기 위해 성능 테스트는 20kB 문자열 매개변수를 읽거나 변경하는 함수로 수행됩니다. 결과는 놀라웠습니다.

  • 함수 읽기/매개변수 사용:

    • 값 전달: 0.12065005초
    • 참조로 전달: 1.52171397 초
  • 함수 작성/매개변수 변경:

    • 값 전달: 1.52223396초
    • 전달 참조: 1.52388787 초

추론

테스트 결과 읽기 및 수정 모두에서 값 전달이 참조별 전달보다 지속적으로 빠른 것으로 나타났습니다. 매개변수. 이는 PHP의 Copy On Write 메커니즘이 참조별 전달을 위해 우회되거나 최적화되지 않았음을 의미합니다.

결론

일반적인 믿음과는 반대로, 전달별 사용은 PHP의 참조는 성능을 향상시키지 않습니다. 매개변수 값을 변경하지 않는 함수의 경우 복사는 무시할 수 있습니다. 그러나 매개변수 수정이 필요한 경우 참조별 전달과 값별 전달은 거의 동일한 성능 특성을 갖습니다. 따라서 원래 의도된 대로 함수 범위 외부에서 변수를 수정할 때만 참조별 전달을 사용하는 것이 중요합니다.

위 내용은 참조에 의한 전달이 실제로 PHP의 성능을 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.