婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php使用yield對性能提升的測試實例分析

php使用yield對性能提升的測試實例分析

熱門標簽:江西手機自動外呼防封系統是什么 怎么向銷售公司推銷外呼系統 廣東地市地圖標注 仁和怎么申請400開頭的電話 哪里辦理400電話 廣州防封卡外呼系統多少錢一個月 長春人工外呼系統服務商 高德地圖標注家 外呼系統撥打暫時無法接通

本文實例講述了php使用yield對性能提升的測試。分享給大家供大家參考,具體如下:

生成器提供了一種更容易的方法來實現簡單的對象迭代,相比較定義類實現 Iterator 接口的方式,性能開銷和復雜性大大降低。生成器允許你在 foreach 代碼塊中寫代碼來迭代一組數據而不需要在內存中創建一個數組, 那會使你的內存達到上限,或者會占據可觀的處理時間。相反,你可以寫一個生成器函數,就像一個普通的自定義函數一樣, 和普通函數只返回一次不同的是, 生成器可以根據需要 yield 多次,以便生成需要迭代的值。

有兩個php文件,demo1.php與demo2.php,兩種不同的方式實現求0,到5000之間的數字的平方值并輸出,并打印腳本運行的時間與使用的內存大小。

demo1.php

?php
$startMemory = memory_get_usage(); 
$startTime = time();
function convert($size)
{
    $unit=array('b','kb','mb','gb','tb','pb');
      return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}
function squares($start,$stop){
  $info = '';
  $square = 0;
  for($i=$start;$i$stop;$i++){
    $square = $i*$i;
    $info .= $i.' squared is '.$square.PHP_EOL;
  }
  return $info;
}
$info = squares(0,50000);
echo $info.PHP_EOL;
$endTime = time();
$useTime = $endTime-$startTime;
$endMemory = memory_get_usage(); 
$useMemory = $endMemory-$startMemory;
echo "總共占用的內存大小為:".convert($useMemory).PHP_EOL;
echo "總共占用的時間為:".$useTime.'秒'.PHP_EOL;

運行結果如下:

49993 squared is 2499300049
49994 squared is 2499400036
49995 squared is 2499500025
49996 squared is 2499600016
49997 squared is 2499700009
49998 squared is 2499800004
49999 squared is 2499900001

總共占用的內存大小為:1.28 mb
總共占用的時間為:5秒

demo2.php

?php
$startMemory = memory_get_usage(); 
$startTime = time();
function convert($size)
{
  $unit=array('b','kb','mb','gb','tb','pb');
  return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}
function squares($start,$stop){
  for($i = $start;$i$stop;$i++){
    yield $i=>$i*$i;
  }
}
foreach(squares(0,50000) as $n=>$square ){
  echo $n.' squared is '.$square.PHP_EOL;
}
$endTime = time();
$useTime = $endTime-$startTime;
$endMemory = memory_get_usage(); 
$useMemory = $endMemory-$startMemory;
echo "總共占用的內存大小為:".convert($useMemory).PHP_EOL;
echo "總共占用的時間為:".$useTime.'秒'.PHP_EOL;

運行demo2.php結果如下:

49988 squared is  2498800144
49989 squared is  2498900121
49990 squared is  2499000100
49991 squared is  2499100081
49992 squared is  2499200064
49993 squared is  2499300049
49994 squared is  2499400036
49995 squared is  2499500025
49996 squared is  2499600016
49997 squared is  2499700009
49998 squared is  2499800004
49999 squared is  2499900001
總共占用的內存大小為:32 b
總共占用的時間為:5秒

總結:對比發現,可能由于腳本計算比較簡單,運行的時間沒啥太大變化。明顯發現使用yield后占用內存的量要少很多。說明使用yield還是對性能提升很有幫助的,像類似的一次性拉取大數據量的數據都可以考慮使用yield實現(數據統計等).

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序算法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》及《PHP常用遍歷算法與技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • 詳解Yaf框架PHPUnit集成測試方法
  • PHP單元測試配置與使用方法詳解
  • PHPUnit + Laravel單元測試常用技能
  • PHP使用phpunit進行單元測試示例
  • 高質量PHP代碼的50個實用技巧必備(下)
  • 高質量PHP代碼的50個實用技巧必備(上)
  • 很讓人受教的 提高php代碼質量36計
  • 寫出高質量的PHP程序
  • 淺談如何提高PHP代碼質量之端到端集成測試

標簽:廈門 惠州 黔東 文山 梅河口 湘西 濮陽 海北

巨人網絡通訊聲明:本文標題《php使用yield對性能提升的測試實例分析》,本文關鍵詞  php,使用,yield,對,性能,提升,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php使用yield對性能提升的測試實例分析》相關的同類信息!
  • 本頁收集關于php使用yield對性能提升的測試實例分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 荔波县| 两当县| 辰溪县| 韶山市| 九龙县| 佛教| 巴东县| 姜堰市| 大洼县| 漳平市| 二连浩特市| 武安市| 兴仁县| 盐边县| 康平县| 上饶县| 西乌| 略阳县| 垣曲县| 万安县| 怀集县| 科技| 富源县| 肃宁县| 二连浩特市| 石门县| 海阳市| 临清市| 开化县| 怀来县| 建平县| 大田县| 南昌县| 山西省| 崇信县| 图们市| 大方县| 高陵县| 石首市| 察雅县| 鄢陵县|