One endpoint. The heaviest catalog page of one project, same data, same opcache settings, PHP 5.6 against 7.0. That is the only benchmark I trust. 7.0 has been out for three weeks, everyone has seen the hello-world numbers, and I do not believe hello-world numbers on principle.
Response time dropped about 40 percent. Memory per request, more than half. No code changes. I ran it again because I did not believe the first numbers either. The engine rewrite is real: smaller internal structures, cheaper function calls, and typical framework code is exactly that, thousands of small calls and arrays.
Speed is the free part. The language is the part you have to earn.
declare(strict_types=1);
function monthlyPrice(int $amount, float $rate): float
{
return $amount * $rate / 12;
}
$name = $_GET['name'] ?? 'guest';
Scalar types on boundaries turn a class of quiet data bugs into loud TypeErrors. ?? deletes a thousand isset() ternaries. Both are opt-in. Old code runs as before.
The thing that will bite migrating projects is the error hierarchy. Fatal errors are throwable now, as Error. catch (Exception $e) does not catch them, they only share Throwable. Every global handler and every too-clever try/catch wrapper needs a review, or your handled errors turn into white screens.
The checklist for the legacy fleet is short. Kill remaining mysql_* calls, the extension is gone. Rename PHP 4 style constructors. Run the tests and read the deprecation output. We did most of this in summer on the alphas, so December is calm here.
Staying on 5.x now has a price measured in hardware. Strange position for a language that was declared dying every year since I started writing it. I intend to enjoy it for a while.