경영진은 컴파일 된 PHP 확장을 호출하는 것보다의 definetly 느립니다. Ext_skel은 친한 친구입니다.
편집 : exec에 대한 이론적 인 정보는 기본 제공되는 확장명보다 느립니다. strace를 실행하고 PHP 스크립트에서 exec가 얼마나 많은 syscalls를 확인하고 컴파일 된 확장 프로그램을 호출하는지 확인하십시오.
시스템 : VM웨어 워크 스테이션, C2DUO E8400 2GB의 RAM
** 실행 된 4 회 :
시간 ./a.php (EXEC)
여기
몇 가지 벤치 마크 실제 0m0.944s
사용자 0m0.700s
에 sys 0m0.244s
시간 ./a :시간 ./b.php (PHP 확장)
실제 0m0.268s는
사용자는
에 sys 0m0.056s
** 실행 된 1000 배를 0m0.212s. PHP (EXEC)
실제 3m47.042s
사용자 2m48.239s
SYS의 0m56.784s
,
시간 ./b.php (PHP 확장)
실제 3m36.631s
사용자 2m46.922s
SYS의 0m49.627s
나는이 어떤 설명이 필요하다고 생각하지 않습니다. 컴파일 된 확장 프로그램이 더 빨리 실행되고 친환경적이며 CPU 시간이 단축됩니다. 더 나은 것으로 간주됩니다. 또한 확장을 사용하면 리소스를 재사용 할 수 있습니다. 같은 이미지에서 10 가지 버전을 만들고 싶다면 어떻게해야할까요? 그런 다음 매번 new imagick('filename');
개체를 다시 만들 필요가 없습니다.
시간 ./bx.php (PHP EXTENSION 재사용 RESOURCE)
실제 0m3.712s
사용자가 0m3.552s
에 sys 0m0.156s
스크립트 내용 :
#!/usr/bin/php5
<?php
for ($i=0; $i < 1000; $i++)
{
exec('/usr/bin/convert -thumbnail 150 src1.jpg dst.jpg');
}
?>
스크립트 B 내용 :
#!/usr/bin/php5
<?php
for ($i=0; $i < 1000; $i++)
{
$img = new imagick('src1.jpg');
$img->thumbnailImage(150, null);
$img->writeImage('dst.jpg');
} //for
?>
명
스크립트 BX 내용 :
#!/usr/bin/php5
<?php
$img = new imagick('src1.jpg');
for ($i=0; $i < 1000; $i++)
{
$img->thumbnailImage(150, null);
$img->writeImage('dst.jpg');
} //for
?>
스크립트 포크와 스택 트레이스 (단순 실행) : 포크와 LINK
스크립트 B의 스택 트레이스 (단순 실행) : 는 LINK
초당 4 회의 통화는 특별한 것이 아닙니다. – Artefacto