PHP7함수 유형 제한이 성능에 영향을 미치나요? 다음 기사에서는 PHP7 함수 데이터 유형 제한 설정이 성능에 미치는 영향에 대해 설명합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.
이 기사에서는 주로 간단한 스트레스 테스트를 사용하여 PHP7 함수의 데이터 유형을 제한하지 않거나 설정하는 것이 성능에 미치는 영향을 탐구합니다. 또한 두 가지 작업에서 직면한 작은 문제와 처리 방법을 공유하겠습니다. 오류가 있으면 수정해 주세요.
PHP7 함수 유형 제한
(1) 소개
- 함수 매개변수 유형 제한(반환 값, 멤버 속성 포함)은 PHP5부터 지원되었지만 PHP7에서는 지원되는 유형이 많지 않습니다: int/ 문자열 /bool/object 등
-
함수
- 잘못된 호출을 방지하려면 유형을 표시하고 특히 여러 사람이 공동으로 개발하는 경우 동일한 유형의 매개변수만 전달합니다.
추천 학습: "PHP 동영상 튜토리얼"
- 데이터 유형이 자동으로 변환되지 않는 경우 다음과 같이 물론 변환할 유형이 정상적으로 변환될 수 있다는 전제가 있습니다
- 그리고 이 글은 테스트 유형 제한이 성능에 미치는 영향
function testInt(int $intNum){ var_dump($intNum); } testInt("123"); // int(123)
- 잘못된 호출을 방지하려면 유형을 표시하고 특히 여러 사람이 공동으로 개발하는 경우 동일한 유형의 매개변수만 전달합니다.
- 참고: 매개변수와 반환 값이 설정된 유형과 일치하지 않으면 오류가 보고됩니다. 100% 확인되지 않으면 수동으로 변환해야 합니다
(2) 스트레스 테스트
-
실행 환경
- PHP 7.2.34
- Laravel 5.8
- AB 2.3
-
독립형 구성
- 모델명 MacBook Pro
- 프로세서 이름 Quad-Core Intel Core i7
- Memory 8 GB
- 총 코어 수 4
-
AB
- 스트레스 테스트는 AB(Apache Benchmark)를 사용하여 정식 스트레스 테스트가 아니기 때문에 신경쓰이는 부분만 있습니다. 종합 지표: 초당 요청 수(초당 평균 요청 수)
-
주요 매개변수
- -n 스트레스 테스트 요청 수
- -c 동시성 수
- -p 생성 시 필수 매개변수가 포함된 파일을 지정합니다. a POST 요청
- -r 오류 응답이 발생하면 종료하지 마십시오. 운영 체제에는 높은 동시성 공격에 대한 보호 조치가 있습니다(apr_socket_recv: 피어에 의한 연결 재설정)
- 프로젝트 설정 비즈니스 로직 없이 두 개의 POST 인터페이스를 설정합니다. , 미들웨어 작업 등을 다음과 같이 수행합니다.
/***** 1 普通接口 *****/ // CommonUserController public function createUser(Request $request) { $this->validate($request, [ 'name' => 'required|string', 'age' => 'required|integer', 'sex' => ['required', Rule::in([1, 2])], ]); (new CommonUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? ''); return response()->json(['status' => 200, 'msg' => 'ok']); } // CommonUserModel public function createUser($sex, $age, $name, $address) { if(empty($sex) || empty($age) || empty($name)) return false; // 省略DB操作 return true; } /***** 2 类型限定接口 *****/ // TypeUserController public function createUser(Request $request): JsonResponse { $this->validate($request, [ 'name' => 'required|string', 'age' => 'required|integer', 'sex' => ['required', Rule::in([1, 2])], ]); (new TypeUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? ''); return response()->json(['status' => 200, 'msg' => 'ok']); } // TypeUserModel public function createUser(int $age, string $name, int $sex, string $address): bool { if(empty($sex) || empty($age) || empty($name)){ return false; } // 省略DB操作 return true; }
(3) 구현
- 총 5번의 스트레스 테스트를 수행했으며 구성 및 결과는 다음과 같이 표시됩니다(전체 삭제됨):| ')
/*****第一次*****/ // 类型限定接口 rps=456.16 ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user // 普通接口 rps=450.12 ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user /*****第二次*****/ // 类型限定接口 rps=506.74 ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user // 普通接口 rps=491.24 ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user /*****第三次*****/ // 类型限定接口 rps=238.43 ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user // 普通接口 rps=237.16 ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user /*****第四次*****/ // 类型限定接口 rps=209.21 ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user // 普通接口 rps=198.01 ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user /*****第五次*****/ // 类型限定接口 rps=191.17 ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user // 普通接口 rps=190.55 ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user
(4) 결과
- 압력 테스트는 너무 엄격하지 않고 결과는 참고용일 뿐입니다
유형 제한의 성능 향상은 예상만큼 크지 않고 매우 작습니다. 이런 글쓰기 방식을 추천합니다
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 PHP7 함수 유형 제한이 성능에 영향을 미치는지 이야기해 볼까요? (테스트 토론)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
