当前位置: 首页 > news >正文

扫描做电子版网站硬盘做网站空间

扫描做电子版网站,硬盘做网站空间,企业建设微网站的重要性,注册公司名字大全性能往往是衡量代码很重要的一个标准。我们日常编码中经常会用到一些魔术方法#xff0c;这些PHP提供的魔术方法是否会影响我们程序的性能呢#xff1f;是否需要减少魔术方法 的使用呢#xff1f;本文将通过测试对比来了解魔术方法对性能的影响。疑惑魔术方法真的性能比较差…性能往往是衡量代码很重要的一个标准。我们日常编码中经常会用到一些魔术方法这些PHP提供的魔术方法是否会影响我们程序的性能呢是否需要减少魔术方法 的使用呢本文将通过测试对比来了解魔术方法对性能的影响。疑惑魔术方法真的性能比较差吗PHP7里使用魔术方法的性能还是存在问题吗我们应该如何合理的使用魔术方法方案面对我的疑惑我的方案是:统计对比使用魔术方法和不使用魔术方法脚本执行的时间差异PHP5.6.26-1 下连续执行脚本n次统计执行时间的平均值/最小值/最大值PHP7.0.12-2 下连续执行脚本n次统计执行时间的平均值/最小值/最大值测试__construct首先我们先来看看构造函数__construct的实验php脚本如下?php /*** 魔术方法性能探索** 构造函数** author TIGERB */require(./function.php);if (!isset($argv[1])) {die(error: variable is_use_magic is empty);}$is_use_magic $argv[1];/*** 构造函数使用类名*/class ClassOne{public function classOne(){# code...}}/*** 构造函数使用魔术函数__construct*/class ClassTwo{public function __construct(){# code...}}$a getmicrotime();if ($is_use_magic no_magic) {new ClassOne();}else {new ClassTwo();}$b getmicrotime();echo ($b-$a) . \n;PHP5.6不使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 no_magic php5 construct// 运行数据统计脚本sh analysis ./logs/__construct_no_magic_php5.log 10000// 结果avg: 34μsmax: 483μsmin: 26μsPHP5.6使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 magic php5 construct// 运行数据统计脚本sh analysis ./logs/__construct_magic_php5.log 10000// 结果avg: 28μsmax: 896μsmin: 20μsPHP7.0不使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 no_magic php construct// 运行数据统计脚本sh analysis ./logs/__construct_no_magic_php.log 10000// 结果avg: 19μsmax: 819μsmin: 13μsPHP7.0使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 magic php construct// 运行数据统计脚本sh analysis ./logs/__construct_magic_php.log 10000// 结果avg: 14μsmax: 157μsmin: 10μs通过上面的数据我们可以看出使用__construct作为构造函数的脚本执行的平均时间是要快于使用类名作为构造函数的大概快5到6微秒不论是在php5.6还是php7.0中。__call接着我们来看看__call的实验php脚本如下?php /*** 魔术方法性能探索** 构造函数** author TIGERB */require(./function.php);if (!isset($argv[1])) {die(error: variable is_use_magic is empty);}$is_use_magic $argv[1];/*** 构造函数使用类名*/class ClassOne{public function __construct(){# code...}public function test(){# code...}}/*** 构造函数使用魔术函数__construct*/class ClassTwo{public function __construct(){# code...}public function __call($method, $argus){# code...}}$a getmicrotime();if ($is_use_magic no_magic) {$instance new ClassOne();$instance-test();}else {$instance new ClassTwo();$instance-test();}$b getmicrotime();echo ($b-$a) . \n;PHP5.6不使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 no_magic php5 call// 运行数据统计脚本sh analysis ./logs/__call_no_magic_php5.log 10000// 结果avg: 27μsmax: 206μsmin: 20μsPHP5.6使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 magic php5 call// 运行数据统计脚本sh analysis ./logs/__call_magic_php5.log 10000// 结果avg: 29μsmax: 392μsmin: 22μsPHP7.0不使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 no_magic php call// 运行数据统计脚本sh analysis ./logs/__call_no_magic_php.log 10000// 结果avg: 16μsmax: 256μsmin: 10μsPHP7.0使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 magic php call// 运行数据统计脚本sh analysis ./logs/__call_magic_php.log 10000// 结果avg: 18μsmax: 2459μsmin: 11μs通过上面的数据我们可以看出使用__call的脚本执行的平均时间是要慢于不使用大概慢2微秒不论是在php5.6还是php7.0中。__callStatic接着我们来看看__callStatic的实验php脚本如下?php /*** 魔术方法性能探索** 静态重载函数** author TIGERB */require(./function.php);if (!isset($argv[1])) {die(error: variable is_use_magic is empty);}$is_use_magic $argv[1];/*** 存在test静态方法*/class ClassOne{public function __construct(){# code...}public static function test(){# code...}}/*** 使用重载实现test*/class ClassTwo{public function __construct(){# code...}public static function __callStatic($method, $argus){# code...}}$a getmicrotime();if ($is_use_magic no_magic) {ClassOne::test();}else {ClassTwo::test();}$b getmicrotime();echo ($b-$a) . \n;PHP5.6不使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 no_magic php5 callStatic// 运行数据统计脚本sh analysis ./logs/__callStatic_no_magic_php5.log 10000// 结果avg: 25μsmax: 129μsmin: 19μsPHP5.6使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 magic php5 callStatic// 运行数据统计脚本sh analysis ./logs/__callStatic_magic_php5.log 10000// 结果avg: 28μsmax: 580μsmin: 20μsPHP7.0不使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 no_magic php callStatic// 运行数据统计脚本sh analysis ./logs/__callStatic_no_magic_php.log 10000// 结果avg: 14μsmax: 130μsmin: 9μsPHP7.0使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 magic php callStatic// 运行数据统计脚本sh analysis ./logs/__callStatic_magic_php.log 10000// 结果avg: 14μsmax: 159μsmin: 10μs通过上面的数据我们可以看出在php5.6中使用__callStatic的脚本执行的平均时间是要慢于不使用大概慢3微秒;在php7.0中使用__callStatic的脚本执行的平均时间是要大致等于不使用__callStatic的__set接着我们来看看__set的实验php脚本如下?php /*** 魔术方法性能探索** 设置私有属性__set** author TIGERB */require(./function.php);if (!isset($argv[1])) {die(error: variable is_use_magic is empty);}$is_use_magic $argv[1];/*** 实现公共方法设置私有属性*/class ClassOne{/*** 私有属性** var string*/private $someVariable private;public function __construct(){# code...}public function setSomeVariable($value ){$this-someVariable $value;}}/*** 使用_set设置私有属性*/class ClassTwo{/*** 私有属性** var string*/private $someVariable private;public function __construct(){# code...}public function __set($name , $value ){$this-$name $value;}}$a getmicrotime();if ($is_use_magic no_magic) {$instance new ClassOne();$instance-setSomeVariable(public);}else {$instance new ClassTwo();$instance-someVariable public;}$b getmicrotime();echo ($b-$a) . \n;PHP5.6不使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 no_magic php5 set// 运行数据统计脚本sh analysis ./logs/__set_no_magic_php5.log 10000// 结果avg: 31μsmax: 110μsmin: 24μsPHP5.6使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 magic php5 set// 运行数据统计脚本sh analysis ./logs/__set_magic_php5.log 10000// 结果avg: 33μsmax: 138μsmin: 25μsPHP7.0不使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 no_magic php set// 运行数据统计脚本sh analysis ./logs/__set_no_magic_php.log 10000// 结果avg: 15μsmax: 441μsmin: 11μsPHP7.0使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 magic php set// 运行数据统计脚本sh analysis ./logs/__set_magic_php.log 10000// 结果avg: 17μsmax: 120μsmin: 11μs通过上面的数据我们可以看出使用__set的脚本执行的平均时间是要慢于不使用大概慢2微秒不论是在php5.6还是php7.0中。__get接着我们来看看__get的实验php脚本如下?php /*** 魔术方法性能探索** 读取私有属性__get** author TIGERB */require(./function.php);if (!isset($argv[1])) {die(error: variable is_use_magic is empty);}$is_use_magic $argv[1];/*** 实现公共方法获取私有属性*/class ClassOne{/*** 私有属性** var string*/private $someVariable private;public function __construct(){# code...}public function getSomeVariable(){return $this-someVariable;}}/*** 使用_get获取私有属性*/class ClassTwo{/*** 私有属性** var string*/private $someVariable private;public function __construct(){# code...}public function __get($name ){return $this-$name;}}$a getmicrotime();if ($is_use_magic no_magic) {$instance new ClassOne();$instance-getSomeVariable();}else {$instance new ClassTwo();$instance-someVariable;}$b getmicrotime();echo ($b-$a) . \n;PHP5.6不使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 no_magic php5 get// 运行数据统计脚本sh analysis ./logs/__get_no_magic_php5.log 10000// 结果avg: 28μsmax: 590μsmin: 20μsPHP5.6使用魔术方法数据如下单位微秒μs// PHP5.6中连续调用脚本10000次sh test 10000 magic php5 get// 运行数据统计脚本sh analysis ./logs/__get_magic_php5.log 10000// 结果avg: 28μsmax: 211μsmin: 22μsPHP7.0不使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 no_magic php get// 运行数据统计脚本sh analysis ./logs/__get_no_magic_php.log 10000// 结果avg: 16μsmax: 295μsmin: 10μsPHP7.0使用魔术方法数据如下单位微秒μs// PHP7.0中连续调用脚本10000次sh test 10000 magic php get// 运行数据统计脚本sh analysis ./logs/__get_magic_php.log 10000// 结果avg: 19μsmax: 525μsmin: 12μs通过上面的数据我们可以看出在php5.6中使用__get的脚本执行的平均时间是要大致等于不使用__get的;在php7.0中使用__get的脚本执行的平均时间是要慢于不使用大概慢3微秒。结语这里主要测试了__construct() __call() __callStatic() __get() __set()这五个常用的且可有其他实现方式代替的魔法函数。通过上面的测试再回来解答我的疑惑魔术方法真的性能比较差吗答除了使用__construct之外这里使用其他的魔法方法的时间大致慢10微秒以内。PHP7里使用魔术方法的性能还是存在问题吗答在PHP7中使用与不使用魔术方法之间的差异和在PHP5.6中近乎一致。我们应该如何合理的使用魔术方法答通过整个测试我们可以看出使不使用魔法方法这之间的执行时间差异大致都是在10微秒以内的所以如果魔法方法可以很好的节省我们的开发成本和优化我们的代码结构我们应该可以考虑牺牲掉这不到10微秒。而__construct是要快的所以使用__construct应该没什么异议。
http://www.pierceye.com/news/440419/

相关文章:

  • 个人网站开发是学什么语言wordpress打造cms
  • 网站建设与维护的重要性岳阳建设厅网站
  • 惠州网站开发公司wordpress简单
  • 外贸网站 免费模板 使用 zencart如何购买域名和备案
  • 网站建设联系我们设计网站无锡
  • 深圳做网站好的公司wordpress建菜单
  • 网站编辑需要的技能做网站需要什么域名
  • 营销型网站建设目的和意义网站托管方案
  • 网站感谢页面企业标志图片大全
  • 响应式网站建设必推全网天下邵阳竞价网站建设设计
  • 大连网站如何制作辽阳公司做网站
  • 百度站长怎么验证网站jekyll做公司网站
  • 电子商务公司建设网站方案设计网站建设开发背景
  • 同一产品做多个网站山西省住房和城乡建设厅官网
  • 网站建设的流程是什么意思微信小程序的代码
  • 广州网站整站优化html项目案例实战
  • 宁波网站推广方式seo优化按天扣费
  • 紫金优化网站制作python编程100例
  • 原阳网站建设哪家好域名网址
  • 西安学校网站建设wordpress手机端模板下载
  • 泉州网站建设工作室网站上的产品板块
  • 平顶山网站网站建设网页设计与制作教程 刘瑞信 pdf
  • 网站开发深天津设计公司排行榜
  • 做tcf法语听力题的网站公司网页简介
  • 十堰做网站最专业的公司深圳企业网查询
  • 购物网站大全排名调查drupal与wordpress哪个容易
  • 网站建设彳金手指排名网站开发完没人运营
  • 网站建设是设开发公司质量管理流程
  • 金沙网站怎么做代理wordpress tag=
  • 做网站必须花钱吗建筑人才网证书查询