PHP 버전별 컴퓨팅 속도 비교
개요
최근에 PHP를 접촉하기 시작했는데 PHP의 계산 처리가 느리다고 들었어요. 아니요. 의외로 속도가 빨라졌어요. 그래서 실제 상황을 다른 버전으로 나누어 대충 기준을 비교하고 싶어요.
이번에 참고할 페이지는 여기 있습니다.
상기 사이트는 php를 비교하지 않았지만 실제 비교를 바탕으로 다른 언어와 비교할 수 있기 때문에 같은 lipnits 서열을 계산하는 시간을 측정했다.(물론 기계의 출력 차이가 있기 때문에 좋은 비교는 아니지만,)
LeibnizFormula.php
<?php
function leibniz_formula()
{
$s = 0;
for ($i = 0; $i < 10**8; $i++)
{
$s += ((-1)**$i)/(2*$i + 1);
}
return $s;
}
leibniz_formula()
기타 실제 소스 코드는 이쪽에 있습니다.Docker와 Makefile로 빠르게 구축할 수 있으니 가능하면 놀아보세요.측량하다
그럼 실제로 측정해 보세요.
이번에 사용한 php 버전은 다음과 같다.
php 5.6
우선 php5.6부터 시작합니다.
$ /usr/bin/time -f "\nreal:%e[sec]\nuser:%U[sec]\nsys:%S[sec]\nMemory:%M[KB]" php LeibnizFormula.php
real:15.38[sec]
user:15.34[sec]
sys:0.01[sec]
Memory:20560[KB]
어때요...?웃다 웃다참고 기사를 대충 본 느낌은 C언어(3.68s)와 자바(8.18s)에 밀렸지만 파이톤(49.65s)을 보면 나쁘지 않은 것 같아 웃었다.
php 7.0
그럼 다음은 php7입니다.0.
$ /usr/bin/time -f "\nreal:%e[sec]\nuser:%U[sec]\nsys:%S[sec]\nMemory:%M[KB]" php LeibnizFormula.php
real:12.97[sec]
user:12.94[sec]
sys:0.00[sec]
Memory:23184[KB]
아, 아직 이르다.약 85퍼센트의 시간.다만, 대가인지 메모리 소비도 늘었다.php 7.4
그럼 다음은 7.4입니다.같은 7이라서 기대가 안 돼요.나는
$ /usr/bin/time -f "\nreal:%e[sec]\nuser:%U[sec]\nsys:%S[sec]\nMemory:%M[KB]" php LeibnizFormula.php
real:10.17[sec]
user:10.16[sec]
sys:0.01[sec]
Memory:21752[KB]
짧아졌어!!아까보다 많이 개선됐네.깜짝 놀랐어요.php 8.0
그럼 마지막으로 php8입니다.이것에 대한 기대가 크다.
$ /usr/bin/time -f "\nreal:%e[sec]\nuser:%U[sec]\nsys:%S[sec]\nMemory:%M[KB]" php LeibnizFormula.php
real:10.26[sec]
user:10.20[sec]
sys:0.01[sec]
Memory:21928[KB]
어??전혀 변하지 않았다.빨라졌다면서요?그래서 조사해 보니 이 보도가 발견되었다.요컨대 JIT라는 기술을 도입해 속도가 빠른 것은 사실이지만 기본적으로 OFF 상태이기 때문에 설정해야 한다.
php 8.0 with JIT
php.ini에 다음 설정이 추가되었습니다.
php.in
zend_extension = opcache
[opcache]
opcache.enable_cli=1
opcache.enable = 1
opcache.jit = on
opache.optimization_level=0x7FFFBFFF
opcache.jit_buffer_size = 128M
그리고 실행 결과는 여기에 있다./usr/bin/time -f "\nreal:%e[sec]\nuser:%U[sec]\nsys:%S[sec]\nMemory:%M[KB]" php LeibnizFormula.php
real:10.01[sec]
user:9.87[sec]
sys:0.07[sec]
Memory:25424[KB]
응, 거의 변한 것 같지 않아.JIT는 현금 구조인지 몇 번 뛰었더니 0.5s 정도가 빨라졌다.캐시 부분 메모리 사용량이 늘었기 때문에 JIT 자체가 작용할 수 있지 않을까요.?
사실 이쪽 프로그램을 뛰게 해 봤어요. 자기보다 속도가 훨씬 빨라서 JIT가 효과를 발휘하는 데도 조건이 있는 것 같아요.
JIT는 사전에 소스 코드를 로컬 코드로 변환해야 하는데 리버니즈 포뮬라는 비교적 원시적인 계산에 그쳐 큰 효과를 발휘하지 못한 것으로 예측됐다.이 부분은 앞으로 검증이 필요한 부분이 있으면 보충해 적겠습니다.
그럼, 자유 연구처럼 변했지만 읽어주셔서 감사합니다!웃다 웃다
인증표(사은품)
이것은 나중에 다시 여러 번 검증한 표다.
5.6
7.0
7.4
8.0
8.0 JIT
18.85s
16.23s
11.05s
12.31s
10.13s
18.74s
13.91s
10.44s
10.49s
9.67s
17.84s
15.02s
11.09s
11.15s
9.83s
Reference
이 문제에 관하여(PHP 버전별 컴퓨팅 속도 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/foolishell/articles/2c2e26f8566b74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)