>  기사  >  백엔드 개발  >  매개변수를 수정하지 않는 함수에 대해 PHP에서 참조에 의한 전달이 값에 의한 전달보다 느립니까?

매개변수를 수정하지 않는 함수에 대해 PHP에서 참조에 의한 전달이 값에 의한 전달보다 느립니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-08 11:45:02514검색

Is Pass-by-Reference Slower Than Pass-by-Value in PHP for Functions That Don't Modify Parameters?

PHP에서 참조에 의한 전달이 더 빠릅니까(>= 5.0)?

PHP에서는 함수 매개변수를 참조에 의해 전달할 수 있습니다. , 함수가 범위 밖의 변수를 수정할 수 있도록 허용합니다. 이는 성능 최적화를 위한 것이 아니지만, PHP에서 사용되는 Copy On Write 논리가 해당 매개변수를 수정하지 않는 함수의 성능에 영향을 미치는지 여부에 대한 의문을 제기합니다.

성능 테스트

20kB의 문자열 매개변수를 사용하여 함수 호출을 100,000회 반복하는 테스트에서 다음이 밝혀졌습니다. 결과:

매개변수를 읽거나 사용하는 함수의 경우:

  • 값 전달: 0.12065005초
  • 참조 전달: 1.52171397초

매개변수를 변경하는 함수의 경우:

  • 값 전달: 1.52223396초
  • 지나가다 참조: 1.52388787초

결론

  1. 두 경우 모두 값으로 매개변수를 전달하는 것이 일관되게 더 빠릅니다.
  2. 매개변수를 수정하는 함수에서는 참조에 의한 전달과 참조에 의한 전달 사이에 큰 성능 차이가 없습니다. 값별 전달.

위 내용은 매개변수를 수정하지 않는 함수에 대해 PHP에서 참조에 의한 전달이 값에 의한 전달보다 느립니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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