PHP中克隆和新性能比较的案例分析

  介绍

这篇文章主要介绍了PHP中克隆和新性能比较的案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

克隆和新本不应该放在一起比较,它们的作用是不同的。但可能有一些场景下,可以用克隆也可以用新的,那么这时候我们选哪个呢?

我编写了两个测试,第一个是声明一个空类,第二个是带构造方法,属性的类。另外,我还加入了PHP序列化的测试。

国际惯例,直接上代码,一目了然。

<强>代码

& lt; PHP ?   定义(& # 39;TEST_COUNT& # 39;, 10000);      功能测试(名称、可赎回美元)   {   时间=美元microtime(真正的);   美元可调用的();   echo $名字,& # 39;时间:& # 39;美元(真正的)——时间,& # 39;& # 39;,PHP_EOL;   }//空的类   A类   {      }   test1()函数   {   回声& # 39;空的类:& # 39;PHP_EOL;   美元=新;   测试(& # 39;克隆# 39;,函数()使用(美元){   ($ i=0;美元我& lt;TEST_COUNT;+ + i)美元   {   obj=克隆一美元;   }   });   测试(& # 39;新# 39;,函数(){   ($ i=0;美元我& lt;TEST_COUNT;+ + i)美元   {   obj=new美元;   }   });   $序列化=序列化(美元);   测试(& # 39;非系列化# 39;,函数()使用(序列化){   ($ i=0;美元我& lt;TEST_COUNT;+ + i)美元   {   美元$ obj=unserialize(序列化);   }   });   }   test1 ();//带构造方法,属性的类   B类   {   公共元数据;      公共函数__construct(元数据)   {   美元$ this→数据=https://www.yisu.com/zixun/数据;   }   }   test2()函数   {   回声的带构造方法,属性的类:“,PHP_EOL;   $ constructData=(   “id”=> 1,   “名字”=>“imi框架牛逼的,   “描述”=>“IMI是一款基于Swoole开发的协程PHP开发框架,拥有常驻内存,协程异步非阻塞IO等优点。’,   “url”=>“https://www.imiphp.com”,   ];   (=new B美元constructData);   测试(B克隆,函数()使用(美元){   ($ i=0;$ i 数据);   }   });   $序列化=序列化(美元);   测试(B非系列化,函数()使用(序列化){   ($ i=0;$ i

运行结果

空的类:

一个克隆时间:0.0015249252319336秒   新时间:0.00090503692626953秒   unserialize时间:0.005108118057251 s

带构造方法,属性的类:

B克隆时间:0.00072503089904785秒   B新时间:0.0015559196472168秒   B unserialize时间:0.0084571838378906 s

<强>结论

从空类的测试结果来看,新的的性能更高。

从带构造方法,属性的类测试结果来看,克隆的性能要比新带上构造参数的性能高不少。

序列化一如既往地性能堪忧,能不用就别用。

所以,我们该用克隆的地方还是乖乖用吧,性能并不差。

PHP中克隆和新性能比较的案例分析