티스토리 뷰
PHP7
2015년 12월 PHP 7 정식 release
- AST파서가 적용되어 메모리 사용량 1/5로 감소
- 객체를 다른곳에 전달할 때 값을 복사하였는데 7.0부터 참조전달을 하도록 바뀌어 &를 쓰지 않아도 됨
- 함수의 매개변수에 타입을 지정할 수 있게됨
- 물음표 두 개를 표기하는 Null 연산자가 지원되어 편리 (삼항연산자 안써도 됨)
2016년 12월 PHP 7.1
2017년 11월 PHP 7.2
2018년 12월 PHP 7.3
2019년 11월 PHP 7.4 프리로딩이 도입되어 최대성능이 8% 향상됨
2022년 11월 PHP 7.4의 지원을 완전히 종료하여 PHP 7.x의 시대가 지나감
PHP8
- 2020년 PHP 8부터 성능 향상을 위한 JIT를 도입, 정의되지 않은 변수 검사 등 예외처리가 강화됨
- 특히 에러를 일시적으로 감추는데 사용되던@연산자가 사라짐
- 다른 언어에서 옵셔널이라 부르는 Null safe 연산자가 지원되어 프로그램의 안정성이 높아짐
$country = $session?->user?->getAddress()?->country;
- 다른 언어에서 어노테이션이라 부르는 애트리뷰트 기능이 지원됨
- 함수의 매개변수에 이름을 붙일 수 있게 됨
- 2021년 11월 PHP 8.1 에서는 드디어 경량 스레드 기능인 Fiber가 RFC찬반투표를 통과하여 도입
- ->자바스크립트의 async - await와 같은 기능인데 이로서 PHP로도 비동기 프로그래밍이 쉬워지게 됨
그밖에 타입정리가 이루어졌고 Enum타입이 추가되어 Resource 타입을 삭제, PHP 내장 함수들 타입들이 모두 부여되었고 내장 함수들
Null 허용여부가 타입으로 엄격하게 적용되어 보안이 더욱 향상됨
JIT에 대해서
PHP는 인터프리터 기반 언어이다.
PHP 실행기가 PHP 스크립트를 읽고 바로 실행하기 때문이다. 컴파일 기반 언어처럼 코드를 기계어나 바이트코드 같은 형태로 바꾸지 않는다.
동시에 PHP는 컴파일 언어 같은 특징을 가진다.
PHP 스크립트를 PHP 엔진이 컴파일하여 만들어낸 바이트코드(opcode)를 OPCache에 저장하여 재사용하기 때문이다.
그리고, PHP8에서는 JIT 컴파일러를 이용하여 머신코드를 재사용할 수 있게 되었다.
그렇다면 컴파일 기반 언어라고 할 수 있나? 아무래도 거리가 있어 보인다.
컴파일 타임 언어라고 한다면 소스 코드를 컴파일러가 머신코드로 바로 생성하여 실행할 수 있게 하거나 바이트 코드로 만들어서 VM이 실행한다거나 해야 한다.
OPcache를 사용하더라도, 최초의 스크립트는 PHP 인터프리터에 의하여 변환되고 그 결과가 재사용되는 것에 가깝다.
애초에 OPcache는 사용자가 명시적으로 활성화하지 않으면 사용할 수 없다.
OPCache란?
OPcache는 PHP script 를 bytecode로 컴파일한 후에 공유 메모리에 저장하여 성능을 향상시키는 모듈이다.
5.5 이상부터 PHP에 내장되어 있는데, 설정 방법은 php.ini 파일을 열어서 아래 구문들을 추가해주면 된다.
참조 :
https://min-nine.tistory.com/210
https://crmerry.tistory.com/170
https://velog.io/@windsekirun/OPCache-Increase-WordPress-NextCloud-Performance
추가로 함수를 상세히 정리한 링크 :
'개발지식 > PHP' 카테고리의 다른 글
PHP Trait란 (0) | 2024.08.29 |
---|---|
PHP int 0값과 비교의 주의점 (0) | 2024.03.18 |
PHP의 Null, 공백 체크 (0) | 2023.11.14 |
- Total
- Today
- Yesterday
- DATE DATETIME TIMESTAMP 차이점
- Laravel Carbon
- 상류공정
- Laravel 데이터 취급 비교
- git branch 정렬
- Laravel vite webpack
- vue.js의 computed 속성
- PHP의 Null
- git branch 날짜순
- Laravel 라이프 사이클
- Laravel 이미지 폴더
- Laravel 서비스 컨테이너
- Laravel seeder 데이터
- Laravel artisan 명령어 정리
- Laravel 설정
- Laravel Pagination
- Laravel 서비스 프로바이더
- Laravel vaildation
- Laravel 인증 라이브러리
- Laravel 페이지네이션
- PHP int 0값
- Laravel 컴포넌트 참조
- Laravel의 쿼리빌더와 Eloquent의 차이
- Laravel post등록
- php trait
- PHP 7 8변경점
- Laravel 데이터 삭제 처리
- artisan serve란
- TCP
- 생소한 일본어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |