온갖 욕을 먹으면서도 끈질기게 살아남는 php
5에서 7으로 넘어올때도 2배 가까운 성능향상으로 존재감을 과시하더니
php8은 더더욱 엄청납니다....
부수적인 내용은 제외하고 JIT컴파일러 도입에 의한
해외 사이트 벤치결과 요약해 보겠습니다.
PHP 8.0 공개일 2020년 11월26일 확정
알파판은 이미 배포중
각 언어별 속도 비교 (피보나치 연산)
php8-dev JIT | 0.444초 |
go 1.13 | 0.052초 |
Java 11.0.4 | 0.038초 |
Python 3.8.1 | 2.449초 |
Node v13.6.0 | 0.2001초 |
재미있는건 JAVA가 go lang보다 빠르네?
php8도 이 정도 속도면 뭐... JIT없이는 아마 파이썬과 놀아야 맞지 싶은데
테스트 코드
$n = 35;
function fibonacci(int $n): int
{
return(($n < 2) ? 1 : fibonacci($n - 2) + fibonacci($n - 1));
}
php 버젼별 성능 비교
php8 default | php8 + opcache | php8 + JIT | PHP 7.4.7 default |
0.814755 | 0.355585 | 0.106190 | 0.960383 |
0.818260 | 0.356907 | 0.106928 | 0.938955 |
0.822746 | 0.353799 | 0.106061 | 0.940920 |
0.817202 | 0.353423 | 0.106768 | 0.951347 |
0.819391 | 0.353574 | 0.106117 | 0.936791 |
7.4.7 디폴트에 비해 php8 JIT컴파일러 사용시 10배에 육박하는 속도... php7도 opcache를 쓰는 결과가 없어 좀 아쉬우나... 그거 감안해도 대략 2-3배 빠르다고들 하네요
테스트용 코드는 이하...
define("BAILOUT", 16);
define("MAX_ITERATIONS", 5000); // 1000だと早すぎたので
class Mandelbrot
{
public function __construct()
{
$output = '';
$d1 = microtime(1);
for ($y = -39; $y < 39; $y++) {
for ($x = -39; $x < 39; $x++) {
if ($this->iterate($x/40.0, $y/40.0) == 0) {
$output .= '*';
} else {
$output .= ' ';
}
}
$output .= "\n";
}
$d2 = microtime(1);
$diff = $d2 - $d1;
echo $output; // 出力は最後にまとめた
printf("\nPHP Elapsed %0.6f\n", $diff);
}
public function iterate($x, $y)
{
$cr = $y-0.5;
$ci = $x;
$zr = 0.0;
$zi = 0.0;
$i = 0;
while (true) {
$i++;
$temp = $zr * $zi;
$zr2 = $zr * $zr;
$zi2 = $zi * $zi;
$zr = $zr2 - $zi2 + $cr;
$zi = $temp + $temp + $ci;
if ($zi2 + $zr2 > BAILOUT) {
return $i;
}
if ($i > MAX_ITERATIONS) {
return 0;
}
}
}
}
$m = new Mandelbrot();
php는 이제 작별을 고하고 python, go에 미래를 맡기려던 저 입니다만...
혹시 php8로 다시 흥하는건가요? ㅋㅋ 이리 되면 루비온 레일즈 고려하던 사람들은 그냥 PHP8이 낫지 싶은디?
뭐 까짓거 흥하면 또 php하죠 뭐
'php' 카테고리의 다른 글
docker로 laravel + mysql + nginx 구축 샘플 (1) | 2020.11.22 |
---|