백엔드 개발 PHP 튜토리얼 Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술

Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술

May 16, 2016 pm 08:15 PM
PHP 함수 구현원리 엔지니어 성능 분석 바이두

수업방식
클래스 메소드의 실행 원리는 사용자 함수와 동일하며 opcode로 변환되어 순차적으로 호출됩니다. 클래스 구현은 클래스와 관련된 일부 기본 정보를 저장하는 zend_class_entry 데이터 구조를 사용하여 zend에 의해 구현됩니다. 이 항목은 PHP가 컴파일될 때 처리됩니다.
zend_function의 공통점에는 현재 메서드에 해당하는 클래스의 zend_class_entry를 가리키는 범위라는 멤버가 있습니다. PHP의 객체지향 구현에 대해서는 여기서 더 자세히 소개하지 않겠습니다. 앞으로는 PHP의 객체지향 구현 원리를 자세히 설명하는 특별한 글을 쓸 예정입니다. 함수에 관한 한, 메서드의 구현 원리는 함수의 구현 원리와 완전히 동일하며, 이론적으로 성능도 유사합니다. 자세한 성능 비교는 나중에 하겠습니다.

성능 비교
함수 이름 길이가 성능에 미치는 영향

》》테스트 방법 이름 길이가 1, 2, 4, 8, 16인 함수를 비교하고, 초당 실행할 수 있는 횟수를 테스트 및 비교하고, 함수 이름 길이가 성능에 미치는 영향을 확인합니다

》》테스트 결과는 아래와 같습니다
Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술

》》결과 분석
그림에서 볼 수 있듯이 함수 이름의 길이는 여전히 성능에 일정한 영향을 미칩니다. 길이가 1인 함수와 길이가 16인 빈 함수 호출의 성능 차이는 1배입니다. 위에서 언급한 것처럼 함수가 호출되면 zend는 먼저 해시 테이블인 전역 function_table에 있는 함수 이름을 통해 관련 정보를 쿼리합니다. 필연적으로 이름이 길수록 쿼리에 더 많은 시간이 소요됩니다. 따라서 실제로 프로그램을 작성할 때 여러 번 호출되는 함수의 이름은 너무 길지 않는 것이 좋습니다.

함수 이름의 길이가 성능에 일정한 영향을 미치긴 하지만 구체적으로 얼마나 큽니까? 이 문제는 실제 상황에 따라 고려해야 할 부분입니다. 기능 자체가 비교적 복잡한 경우에는 전체 성능에 큰 영향을 미치지 않습니다. 한 가지 제안은 여러 번 호출되고 상대적으로 간단한 기능을 갖는 함수에 간결하고 간결한 이름을 지정하는 것입니다.
기능 수가 성능에 미치는 영향

》》시험방법
다음 세 가지 환경에서 함수 호출 테스트를 수행하고 결과를 분석하십시오. 1. 프로그램에는 1개의 함수만 포함되어 있습니다. 2. 프로그램에는 100개의 함수가 포함되어 있습니다. 3. 프로그램에는 1000개의 함수가 포함되어 있습니다. 이 세 가지 경우에 초당 호출할 수 있는 함수 수를 테스트해 보세요

》》테스트 결과는 아래와 같습니다
Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술

》》결과 분석
테스트 결과에서 이 세 가지 경우의 성능이 거의 동일하다는 것을 알 수 있으며, 기능 수가 증가하면 성능 저하가 최소화되어 무시할 수 있습니다. 구현 원리 분석에서 여러 구현 간의 유일한 차이점은 기능 획득 부분입니다. 앞에서 언급했듯이 모든 함수는 해시 테이블에 배치되어 있으며, 숫자가 달라도 검색 효율성은 여전히 ​​O(1)에 가까워야 하므로 성능 차이는 크지 않습니다.
다양한 유형의 함수 호출 비용
》》시험방법
사용자 함수, 클래스 메서드, 정적 메서드, 내장 함수 중 하나를 선택합니다. 함수 자체는 아무것도 하지 않고 직접 반환합니다. 주로 빈 함수 호출의 소비를 테스트합니다. 테스트 결과는 초당 실행 횟수입니다. 테스트 중 다른 효과를 제거하기 위해 모든 함수 이름의 길이는 동일합니다
》》테스트 결과는 아래와 같습니다

》》결과 분석
테스트 결과에서 볼 수 있듯이 사용자가 직접 작성한 PHP 함수의 경우 유형에 관계없이 효율성이 거의 동일하며 모두 약 280w/s입니다. 예상했던 대로 에어컨의 경우에도 내장 기능의 효율이 훨씬 높아져 기존보다 3배 높은 780w/s에 이른다. 내장 함수 호출의 오버헤드는 여전히 사용자 함수의 오버헤드보다 훨씬 낮다는 것을 알 수 있습니다. 앞선 원리 분석을 통해 사용자 함수 호출 시 심볼 테이블을 초기화하고 매개변수를 받는 등의 작업에 가장 큰 공백이 있음을 알 수 있다.

내장함수와 사용자함수 성능비교

》》시험방법
내장 함수와 사용자 함수의 성능을 비교하기 위해 여기서는 일반적으로 사용되는 여러 함수를 선택한 후 PHP를 사용하여 동일한 함수를 구현하는 함수의 성능 비교를 수행합니다. 테스트 중에 비교를 위해 문자열, 수학, 배열 각각에서 일반적인 것을 선택했습니다. 이러한 함수는 문자열 가로채기(substr), 10진수에서 이진수로 변환(decbin), 최소값(min) 및 반환 키입니다. 배열(array_keys).
》》테스트 결과는 아래와 같습니다
Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술
》》결과분석
테스트 결과를 보면 예상했던 대로 내장 기능의 전반적인 성능이 일반 사용자 기능 에 비해 훨씬 높다는 것을 알 수 있습니다. 특히 문자열 연산과 관련된 함수의 경우 그 차이는 1차수에 이릅니다. 따라서 함수 사용의 한 가지 원칙은 특정 함수에 해당하는 내장 함수가 있으면 PHP 함수를 직접 작성하는 대신 이를 사용해 보는 것입니다. 많은 수의 문자열 작업이 포함된 일부 기능의 경우 성능을 향상시키기 위해 확장 사용을 고려할 수 있습니다. 예를 들어 일반적인 서식 있는 텍스트 필터링 등이 있습니다.
C 함수 성능 비교

》》시험방법
비교를 위해 문자열 연산과 산술 연산을 위해 각각 3개의 함수를 선택했고, 확장 기능을 사용하여 PHP를 구현했습니다. 세 가지 기능은 간단한 일회성 산술 연산, 문자열 비교 및 ​​다중 산술 연산입니다. 자체 두 가지 유형의 기능 외에도 기능 에어컨 오버헤드를 제거한 후 성능을 테스트합니다. 한편으로는 두 기능(C 및 PHP 내장) 간의 성능 차이를 비교합니다. 한편, 공조 기능의 소비 테스트 포인트도 확인합니다: 100,000회 동작을 수행하는 데 소요되는 시간
》》테스트 결과는 아래와 같습니다
Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술

》》결과 분석
내장 함수와 C 함수의 오버헤드 차이는 PHP 함수 에어컨의 영향을 제거한 후 작습니다. 함수가 점점 더 복잡해짐에 따라 두 당사자의 성능은 동일하게 접근합니다. 이는 앞선 함수 구현 분석을 통해 쉽게 확인할 수 있다. 결국 내장 함수는 C로 구현된다. 함수가 복잡할수록 C와 PHP 사이의 성능 격차는 줄어듭니다. C와 비교하면 PHP 함수 호출의 오버헤드는 훨씬 높으며 간단한 함수의 성능은 여전히 ​​일정한 영향을 미칩니다. 따라서 PHP의 함수는 너무 깊게 중첩되거나 캡슐화되어서는 안 됩니다.
의사 함수와 그 성능

PHP에는 표준 함수 사용법인 함수가 있지만 기본 구현은 실제 함수 호출과 완전히 다릅니다. 이러한 함수는 위에서 언급한 세 가지 함수 중 어느 것에도 속하지 않으며, 그 본질은 별도의 opcode입니다. 여기서는 의사 함수 또는 명령 함수라고 합니다.

위에서 언급했듯이 의사 함수는 표준 함수와 동일하게 사용되며 동일한 특성을 갖는 것처럼 보입니다. 그러나 최종적으로 실행되면 zend에 의해 호출을 위한 해당 명령어(opcode)에 반영되므로 구현은 if, for 및 산술 연산과 같은 연산에 더 가깝습니다.
》》PHP의 의사 함수
세트
비어있습니다
설정되지 않음
평가
위의 소개에서 알 수 있듯이 의사 함수는 실행 명령으로 직접 변환되므로 일반 함수에 비해 함수 호출로 인한 오버헤드가 하나 적으므로 성능이 더 좋습니다. 다음 테스트를 통해 비교해보겠습니다. Array_key_exists와 isset은 모두 배열에 키가 존재하는지 확인할 수 있습니다. 이제 성능을 살펴보겠습니다
Baidu 엔지니어가 PHP 기능의 구현 원칙 및 성능 분석에 대해 이야기합니다. (2)_php 기술
그림에서 알 수 있듯이, isset 성능은 array_key_exists와 비교했을 때 기본적으로 전자의 약 4배로 훨씬 높으며, 빈 함수 호출과 비교해도 약 1배 정도 성능이 높습니다. 이는 또한 PHP 함수 호출의 오버헤드가 여전히 상대적으로 크다는 것을 증명합니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 Feb 19, 2025 pm 04:54 PM

DeepSeek은 웹 버전과 공식 웹 사이트의 두 가지 액세스 방법을 제공하는 강력한 지능형 검색 및 분석 도구입니다. 웹 버전은 편리하고 효율적이며 설치없이 사용할 수 있습니다. 개인이든 회사 사용자이든, DeepSeek를 통해 대규모 데이터를 쉽게 얻고 분석하여 업무 효율성을 향상시키고 의사 결정을 지원하며 혁신을 촉진 할 수 있습니다.

바이두 아폴로, L4 자율주행을 지원하는 세계 최초 대형 모델 '아폴로 ADFM' 출시 바이두 아폴로, L4 자율주행을 지원하는 세계 최초 대형 모델 '아폴로 ADFM' 출시 Jun 04, 2024 pm 08:01 PM

5월 15일, Baidu Apollo는 우한 Baidu Carrot Auto Robot Zhixing Valley에서 Apollo Day 2024를 개최하여 지난 10년 동안 Baidu의 자율 주행 분야의 주요 발전을 종합적으로 시연하고 대형 모델을 기반으로 한 기술 도약과 승객 안전에 대한 새로운 정의를 가져왔습니다. 세계 최대 자율주행차 운영 네트워크 바이두는 사람이 운전하는 것보다 자율주행을 더 안전하게 만들었습니다. 덕분에 더 안전하고, 더 편안하고, 친환경적이고, 저탄소 여행 방식이 이상에서 현실로 바뀌고 있습니다. 바이두 그룹 부사장이자 지능형 운전 비즈니스 그룹 사장인 왕윤펑(Wang Yunpeng)은 현장에서 "자율주행차를 만드는 우리의 원래 의도는 더 나은 여행에 대한 사람들의 점점 커지는 갈망을 충족시키는 것입니다. 사람들의 만족은 우리의 원동력입니다. 왜냐하면 안전, 너무 아름다워요, 만나서 반가워요

Baidu Robin Li는 팀을 이끌고 PetroChina를 방문하여 석유 및 가스 산업의 정보를 논의했습니다. Baidu Robin Li는 팀을 이끌고 PetroChina를 방문하여 석유 및 가스 산업의 정보를 논의했습니다. May 07, 2024 pm 06:13 PM

7일 해당 사이트 소식에 따르면 지난 5월 6일 바이두 창업자이자 회장 겸 CEO인 로빈 리가 팀을 이끌고 베이징에 있는 중국국영석유공사(이하 '페트로차이나')를 방문해 중국 국영기업 이사들을 만났다. 중국국영석유공사(China National Petroleum Corporation) 회장 겸 당 서기 Dai Houliang이 회담을 가졌습니다. 양측은 협력을 강화하고 에너지 산업과 디지털 인텔리전스의 심층적 통합을 촉진하기 위해 심도 있는 교류를 가졌습니다. PetroChina는 디지털 China Petroleum Corporation의 건설을 가속화하고 Baidu Group과의 협력을 강화하며 에너지 산업과 디지털 인텔리전스의 심층적 통합을 촉진하고 국가 에너지 안보 보장에 더 큰 기여를 할 것입니다. 로빈 리(Robin Li)는 대형 모델이 보여주는 '지능적 출현'과 이해, 생성, 논리, 기억의 핵심 역량이 첨단 기술과 석유 및 가스 사업의 결합을 위한 더 넓은 상상력의 공간을 열었다고 말했습니다. 언제나

성능 분석 도구를 사용하여 Java 기능을 분석하고 최적화하는 방법은 무엇입니까? 성능 분석 도구를 사용하여 Java 기능을 분석하고 최적화하는 방법은 무엇입니까? Apr 29, 2024 pm 03:15 PM

Java 성능 분석 도구를 사용하여 Java 기능의 성능을 분석하고 최적화할 수 있습니다. 성능 분석 도구 선택: JVisualVM, VisualVM, JavaFlightRecorder(JFR) 등 성능 분석 도구 구성: 샘플링 속도 설정, 이벤트 활성화. 함수 실행 및 데이터 수집: 프로파일링 도구를 활성화한 후 함수를 실행합니다. 성능 데이터 분석: CPU 사용량, 메모리 사용량, 실행 시간, 핫스팟 등과 같은 병목 현상 지표를 식별합니다. 기능 최적화: 최적화 알고리즘, 코드 리팩터링, 캐싱 및 기타 기술을 사용하여 효율성을 향상시킵니다.

PHP 함수와 Flutter 함수의 유사점과 차이점 PHP 함수와 Flutter 함수의 유사점과 차이점 Apr 24, 2024 pm 01:12 PM

PHP와 Flutter 함수의 주요 차이점은 선언, 구문 및 반환 유형입니다. PHP 함수는 암시적 반환 유형 변환을 사용하는 반면, Flutter 함수는 반환 유형을 명시적으로 지정합니다. PHP 함수는 ?를 통해 선택적 매개변수를 지정할 수 있으며, Flutter 함수는 필수 및 선택적 매개변수를 지정하기 위해 =를 사용하여 매개변수 이름을 전달합니다. Flutter 함수는 {}를 사용하여 명명된 매개변수를 지정합니다.

삼성전자 갤럭시S24 시리즈 휴대폰 '서치인서클(Search in Circle)' 중국판이 구글 검색을 지원할 것으로 알려졌다. 삼성전자 갤럭시S24 시리즈 휴대폰 '서치인서클(Search in Circle)' 중국판이 구글 검색을 지원할 것으로 알려졌다. Jun 01, 2024 am 09:54 AM

31일 뉴스에 따르면 블로거 @ibinguniverse는 오늘 삼성 갤럭시 S24 시리즈 휴대폰 중국 버전 '서치 인 서클(Search in Circle)'이 구글 검색을 지원한다는 소식을 전했습니다. 블로거는 구체적인 출시 시간을 공개하지 않았습니다. 삼성의 이전 소개에 따르면 삼성 갤럭시 S24 시리즈는 입력, 번역, 녹음, 메모, 카메라 등 AI 기반의 실용적인 기능과 높은 수준의 AI 기능을 탑재해 사용자에게 보다 편리하고 효율적인 종합 서비스를 제공한다. 경험. 해외 버전과 달리 삼성 갤럭시 S24 시리즈의 AI 기능은 대부분 바이두 등 국내 제조사에서 제공하고 있다. 이전에 보고된 Galaxy AI는 Baidu Wenxin 대형 모델의 여러 기능을 심층적으로 통합하여 최종 지원 통화 및 번역 기능은 물론 생성 AI가 제공하는 지능형 요약을 제공할 수 있습니다.

C++ 라이브러리는 타이밍 및 성능 분석을 어떻게 수행합니까? C++ 라이브러리는 타이밍 및 성능 분석을 어떻게 수행합니까? Apr 18, 2024 pm 10:03 PM

C++의 타이밍 및 프로파일링은 코드 조각의 실행 시간을 측정하기 위해 및 같은 타이밍 라이브러리를 사용하여 수행할 수 있습니다. 실제 전투에서 함수 라이브러리를 사용하여 피보나치 수열 함수의 계산 시간을 측정할 수 있으며 출력 결과는 다음과 같습니다. 결과:102334155시간:0.048961초. 또한 성능 분석에는 프로파일링 도구, 로깅 및 성능 카운터와 같은 기술이 포함됩니다.

AI 도구 추천 AI 도구 추천 Nov 29, 2024 am 11:08 AM

이 기사에서는 Douyin Doubao, Wenxin Yige, Tencent Zhiying, Baidu Feipiao EasyDL, Baidu AI Studio 및 iFlytek Spark Cognitive Large Model을 포함한 6가지 인기 AI 도구를 소개합니다. 이러한 도구는 텍스트 생성, 이미지 생성, 비디오 편집 및 AI 모델 개발과 같은 다양한 기능을 다룹니다. 올바른 AI 도구를 선택하려면 기능 요구 사항, 기술 수준, 비용 예산과 같은 요소를 고려해야 합니다. 이러한 도구는 AI 지원이 필요한 개인과 기업에 편리하고 효율적인 솔루션을 제공합니다.

See all articles