HHVM和PHP7新效能

2021-07-28 11:52:58 字數 2939 閱讀 1845

一、一些重要的php版本

php 5.0引入物件導向

php5.3 引入命名空間

php7.0 效能優化

二、hhvm和hack

hhvm本質上是乙個虛擬機器,將php**轉化為php位元組碼 ,大幅度提公升效能。

就是作用類似用zend引擎,但是hhvm支援php和hack兩種語言。

hack相對於php,最顯著的區別在於提供了靜態型別的支援。

所以建議開發採用php7.0!!!

demo1:對應型別提示

<?php 

// 強制型別宣告為開啟狀態

// 當型別不一致時,程式報錯

declare(strict_types=1);

// before php7

function test(array $arr)

}inte***ce payinte***ce

class alipay implements payinte***ce

}function test2(payinte***ce $paymethod)

// 類的例項物件 is instanceof 介面名

demo:匿名類

<?php 

// 匿名類

生成器yield

(一)可以大大減少記憶體的消耗

(1)傳統形式

echo memory_get_usage(),"\n";

$arr = range(1,1000000000);

echo memory_get_usage(),"\n";

(2)使用生成器 

<?php 

function xrange($start, $end)

}// 普通陣列形式

echo memory_get_usage(), "\n";

$arr = range(1, 10000);

// $arr = xrange(1, 10000);

// var_dump($arr);exit;

foreach ($arr as $key => $value)

echo memory_get_usage(), "\n";

(二)時間開銷yield沒有原生形式好。

<?php 

function xrange($start, $end)

}// 普通陣列形式

echo time(), "\n";

// $arr = range(1, 1000000);

$arr = xrange(1, 1000000);

foreach ($arr as $key => $value)

echo time(), "\n";

(三)為什麼時間慢,節省空間?

yield 返回的是迭代器物件不是陣列,所以佔據記憶體空間小。

(四)防範記憶體溢位

<?php 

// 獲取所有資料

// 普通方法

$sql = "select * from news";

$results = mysqli_query($sql);

while ($row = mysqli_fetch_assoc($results))

// 改進yield方式

function getallrecords()

}$rs = getallrecords();

foreach ($rs as $value)

(五)協程工作

詳見參考手冊

php7的新特性

截止到目前為止,php官方已經發布了php7的rc5版本,預計在11月份左右會發布第乙個正式版本!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7.0新特徵吧。1.標量引數型別宣告 現在支援字串 s...

PHP 7 的新特徵

我們知道php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別 int,float,string,bool 的宣告支援,增加declare strict types 1 指令宣告是否嚴格型別校驗,我們來看一段 declare stri...

PHP7 常用新特性

1.標量型別宣告 php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別 int,float,string,bool 的宣告支援,增加declare strict types 1 指令宣告是否嚴格型別校驗,來看一段 declare s...