在对类执行100w次循环后, 常量最快,变量其次,静态变量消耗时间最高

其中:

常量消耗:101.1739毫秒

变量消耗:2039.7689毫秒

静态变量消耗:4084.8911毫秒

测试代码:

class Timer_profiler {public static $begin_timer;public static $finish_timer;public static $timer_html;/*** 计算时间差* @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}耗时: " . self::getRecordTimer() . " 毫秒</p>";}/*** 设置开始时间*/public static function setBeginTimer() {self::$begin_timer = self::getTime();}/*** 设置结束时间*/public static function setFinishTimer() {self::$finish_timer = self::getTime();}/*** 获取开始时间* @return type*/public static function getBeginTimer() {return self::$begin_timer;}/*** 获取结束时间* @return type*/public static function getFinishTimer() {return self::$finish_timer;}/*** 获取带微妙的时间戳 * @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 = '消耗内存<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(),'开始执行');
echo Timer_profiler::recordHtml('开始执行');
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('静态变量完成');
computeTime(xdebug_time_index(),'静态变量完成');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('共执行');
computeTime(xdebug_time_index(),'共执行');
exit;

View Code

转载于:https://www.cnblogs.com/simon-sun/p/3412309.html

php 类静态变量 和 常量消耗内存及时间对比相关推荐

  1. php载入内存的是本地代码吗,常量和静态变量会先载入内存后在进行执行php代码...

    static $test=1;//在php执行前就已经写入内存 $test++; var_dump($test); static $test=10;//在php执行前就已经写入内存 var_dump( ...

  2. 静态函数 静态变量和常量

    静态变量和常亮/静态函数的调用,不需要实例化该类,所以节省资源 <?php Class Person{ // 定义静态成员属性 public static $country = "中国 ...

  3. python类静态变量

    转自:https://www.cnblogs.com/Alexzzzz/p/10795227.html 作者:Alexzzzz python的类静态变量直接定义在类中即可,不需要修饰符,如: clas ...

  4. (50)System Verilog类静态变量实例

    (50)System Verilog类静态变量实例 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类静态变量实例 5)结语 1.2 F ...

  5. (35)System Verilog类静态变量详解

    (35)System Verilog类静态变量详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类静态变量详解 5)结语 1.2 F ...

  6. 类内如何声明静态变量,常量问题

    类内声明静态变量: // static_variable.h class a {static int var; };// static_variable.cpp #include "stat ...

  7. 你真的了解静态变量、常量的存储位置吗?

    文章目录 引言 C++对内存的划分如何落实在Linux上 自由存储区和堆之间的问题 栈 常量区 静态存储区 静态局部变量 静态局部变量.静态全局变量.全局变量的异同 引言 在动态内存的博客中,我提到: ...

  8. c语言字面量的作用是为变量,C语言(五) C 全局变量,局部变量,静态变量和常量...

    一. 全局变量 全局变量是在所有函数体的外部定义的,程序的所有部分(其他文件的代码)都可以使用.全局变量不受作用域的影响.全局变量的生命周期一直到程序的结束,全局变量是静态存储方式. 例: #incl ...

  9. static静态变量 与 常量

    变量: 在学习static静态变量之前,我们还是有必要来了解 变量 的意义.程序要对数据进行读.写.运算等操作,当需要保存特定的值或结果的时候就需要用到变量,在用户看来,变量是用来描述一条信息的名称, ...

最新文章

  1. 京东和小米正在使用AI取代人工客服 | 海斌访谈
  2. 重装失败、PE不能使用、重装很卡 个人电脑故障处理记录
  3. Linux操作系统下利用SSH进行远程控制
  4. Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
  5. 同一个类 cannot be cast to_2021年动漫类年历推荐
  6. 企业数字化转型解决方案
  7. 计算机原理试题b,计算机组成原理试题B答案
  8. chrome 90的新功能(new feature in chrome 90)
  9. ES6_模块化_note
  10. 远程会议总卡顿?8 个“小白”办法一看就会!
  11. opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
  12. 设计模式系列——单例模式
  13. Mysql数据恢复有哪几种_MYSQL 数据恢复有哪些
  14. 免费下载IEEE、SCI论文的网站
  15. ffplay 加载 srt、ass字幕、调整对比度、亮度和饱和度、倍数播放
  16. win10定时语音提醒
  17. 2022-2028全球与中国脚踏泵市场现状及未来发展趋势
  18. sklearn.metrics.pairwise.paired_distances
  19. spring事物 设计模式_是什么使事物变得美丽,以及如何在设计中使用它
  20. 用Vue实现腾讯新闻页面

热门文章

  1. 【ASP.NET Web API教程】5.4 ASP.NET Web API批处理器
  2. 电脑键盘上每个键的作用_眼看着淡出大众视野 键盘上Esc键的隐秘往事
  3. Pytorch GRU(详解GRU+torch.nn.GRU()实现)
  4. python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
  5. mysql卸载权限不够_Linu下启动MySQL结果显示:env: /etc/init.d/mysql:权限不够怎么解决?...
  6. matlab 的cat函数
  7. 了解下广告计费模式CPC、CPA和CPM
  8. AUTOSAR从入门到精通100讲(三十八)-通信网络中的⽐特和帧同步技术
  9. ajax后台怎么取mapp,后台管理实现
  10. oracle exp 00006,Oracle 12.1新特性----使用RMAN从备份中实现recover table