介绍
这篇文章主要介绍了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中克隆和新性能比较的案例分析