php容器性能测试,带来一些意想之外的结果

2022年12月1日16:54:28

因为java使用容器技术,php的laravel也使用容器技术,我就想容器技术的特点是什么?
1,提升性能,如果还要注册类的时候,节省内存
2,方便知道知道那些类注册,可以处理一些重复实例化带来的问题,简单实现单例
3,节省运行时间

运行环境,windows10 php8.0 代码运行模式 cli

composer require phpbench/container

测试代码:

<?php
include "./vendor/autoload.php";

use PhpBench\DependencyInjection\Container;

echo '开始内存:' . (memory_get_usage() / 1024 / 1024) . 'M' . PHP_EOL;

function p(mixed $data = null)
{
    echo '<pre>';
    print_r($data);
    echo '<pre>';
}

$start = microtime(true);
p('开始时间' . $start);

class ZX
{

    public function __construct()
    {
//        echo '__construct';
    }
}

$container = new Container();
$container->register('ZX', function (Container $container) {
    return new \ZX();
});

//第一次测试代码
//for ($i = 0; $i < 100000; $i++) {
//    $zx = $container->get('ZX');
////    p($zx);
//}

//第二次测试代码
for ($i = 0; $i < 100000; $i++) {
    $zx = new ZX();
//    p($zx);
}
echo '结束内存:' . (memory_get_usage() / 1024 / 1024) . 'M' . PHP_EOL;

$end = microtime(true);
p('结束时间' . $start);

p($end - $start);

cli执行结果,有点奇怪

第一测试代码
PS D:\php_code\test_code\container> php .\index.php
开始内存:0.34755706787109M
<pre>开始时间1670998078.3665<pre>
结束内存:0.35064697265625M
<pre>结束时间1670998078.3665<pre>
<pre>0.0076830387115479<pre>

第二测试代码
PS D:\php_code\test_code\container> php .\index.php
开始内存:0.34755706787109M
<pre>开始时间1670998102.0017<pre>
结束内存:0.35028839111328M
<pre>结束时间1670998102.0017<pre>
<pre>0.0061280727386475<pre>

fpm执行结果

第一测试代码
开始内存:0.33467102050781M
开始时间1671513943.5486
结束内存:0.33751678466797M
结束时间1671513943.5486
0.00541090965271

第二测试代码
开始内存:0.33467102050781M
开始时间1671514083.1982
结束内存:0.337158203125M
结束时间1671514083.1982
0.0049540996551514

结果分析:
1,内存没有节约,甚至更消耗内存了
2,速度更慢了

完全没有开始的时候设想的结果,很奇怪,虽然是psr11的规范接口,这个接口不知道具体有什么用

posted on   zh7314  阅读(46)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!

统计

点击右上角即可分享
微信分享提示