php 类静态变量 和 常量消耗内存及时间对比
生活随笔
收集整理的這篇文章主要介紹了
php 类静态变量 和 常量消耗内存及时间对比
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在對(duì)類(lèi)執(zhí)行100w次循環(huán)后, 常量最快,變量其次,靜態(tài)變量消耗時(shí)間最高
其中:
常量消耗:101.1739毫秒
變量消耗:2039.7689毫秒
靜態(tài)變量消耗:4084.8911毫秒
?
?
?
測(cè)試代碼:
?
class Timer_profiler {public static $begin_timer;public static $finish_timer;public static $timer_html;/*** 計(jì)算時(shí)間差* @return type*/public static function getRecordTimer() {return (self::getFinishTimer() - self::getBeginTimer()) * 1000;}/*** 生成輸出HTML* @param type $message* @return type*/public static function recordHtml($message = '') {self::setFinishTimer();return "<p>{$message}耗時(shí): " . self::getRecordTimer() . " 毫秒</p>";}/*** 設(shè)置開(kāi)始時(shí)間*/public static function setBeginTimer() {self::$begin_timer = self::getTime();}/*** 設(shè)置結(jié)束時(shí)間*/public static function setFinishTimer() {self::$finish_timer = self::getTime();}/*** 獲取開(kāi)始時(shí)間* @return type*/public static function getBeginTimer() {return self::$begin_timer;}/*** 獲取結(jié)束時(shí)間* @return type*/public static function getFinishTimer() {return self::$finish_timer;}/*** 獲取帶微妙的時(shí)間戳 * @return type*/private static function getTime() {list($usec, $sec) = explode(" ", microtime());return (number_format($sec+$usec,6,'.', ''));}} function computeTime($otime,$message){return;$ntime = xdebug_time_index();$str = '';$str .= $message . ($ntime*1000-$otime*1000);$str .= "<br>";echo $str; }function getMemoryUsed(){$str = '消耗內(nèi)存<h3 style="color:red"> ';$str .= round(memory_get_usage()/1024/1024, 4).'MB';$str .= '</h3>';echo $str; }$count_i = 100*10000; //$count_i = 100000; Timer_profiler::setBeginTimer(); computeTime(xdebug_time_index(),'開(kāi)始執(zhí)行'); echo Timer_profiler::recordHtml('開(kāi)始執(zhí)行'); getMemoryUsed(); class TestVar {public $A1 = 'aaaaaaaaaaaaaaaaa';public $A2 = 'aaaaaaaaaaaaaaaaa';public $A3 = 'aaaaaaaaaaaaaaaaa';public $A4 = 'aaaaaaaaaaaaaaaaa';public $A5 = 'aaaaaaaaaaaaaaaaa';public $A6 = 'aaaaaaaaaaaaaaaaa';public $A7 = 'aaaaaaaaaaaaaaaaa';public $A8 = 'aaaaaaaaaaaaaaaaa';} $TestVar = new TestVar(); for($i=0;$i<=$count_i;$i++){$t = $TestVar->A1;$t = $TestVar->A2;$t = $TestVar->A3;$t = $TestVar->A4;$t = $TestVar->A5;$t = $TestVar->A6;$t = $TestVar->A7;$t = $TestVar->A8; } getMemoryUsed(); echo Timer_profiler::recordHtml('變量完成'); computeTime(xdebug_time_index(),'變量完成');Timer_profiler::setBeginTimer(); class TestStaticVar {static $A1 = 'aaaaaaaaaaaaaaaaa';static $A2 = 'aaaaaaaaaaaaaaaaa';static $A3 = 'aaaaaaaaaaaaaaaaa';static $A4 = 'aaaaaaaaaaaaaaaaa';static $A5 = 'aaaaaaaaaaaaaaaaa';static $A6 = 'aaaaaaaaaaaaaaaaa';static $A7 = 'aaaaaaaaaaaaaaaaa';static $A8 = 'aaaaaaaaaaaaaaaaa';}for($i=0;$i<=$count_i;$i++){$t = TestStaticVar::$A1;$t = TestStaticVar::$A2;$t = TestStaticVar::$A3;$t = TestStaticVar::$A4;$t = TestStaticVar::$A5;$t = TestStaticVar::$A6;$t = TestStaticVar::$A7;$t = TestStaticVar::$A8; } getMemoryUsed(); echo Timer_profiler::recordHtml('靜態(tài)變量完成'); computeTime(xdebug_time_index(),'靜態(tài)變量完成');Timer_profiler::setBeginTimer(); class TestConstVar {const A1 = 'aaaaaaaaaaaaaaaaa';const A2 = 'aaaaaaaaaaaaaaaaa';const A3 = 'aaaaaaaaaaaaaaaaa';const A4 = 'aaaaaaaaaaaaaaaaa';const A5 = 'aaaaaaaaaaaaaaaaa';const A6 = 'aaaaaaaaaaaaaaaaa';const A7 = 'aaaaaaaaaaaaaaaaa';const A8 = 'aaaaaaaaaaaaaaaaa';} for($i=0;$i<=$count_i;$i++){$t = TestConstVar::A1;$t = TestConstVar::A2;$t = TestConstVar::A3;$t = TestConstVar::A4;$t = TestConstVar::A5;$t = TestConstVar::A6;$t = TestConstVar::A7;$t = TestConstVar::A8; } getMemoryUsed(); echo Timer_profiler::recordHtml('常量完成'); computeTime(xdebug_time_index(),'常量完成');//echo Timer_profiler::recordHtml('共執(zhí)行'); computeTime(xdebug_time_index(),'共執(zhí)行'); exit; View Code?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/simon-sun/p/3412309.html
總結(jié)
以上是生活随笔為你收集整理的php 类静态变量 和 常量消耗内存及时间对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 干扰素多少钱一针啊?
- 下一篇: 单链线性表的实现