kocsismate/di-container-benchmarks

一些流行 PHP DI 容器的基准测试

dev-master 2021-06-19 11:12 UTC

This package is auto-updated.

Last update: 2024-08-30 01:07:58 UTC


README

Software License Gitter

目录

简介

2014年,在 Sitepoint 上发布了一篇关于PHP依赖注入容器的非常有趣的基准测试文章。不幸的是,测试的实施引起了相当大的争议,因此基准测试本身并没有太多洞察力。

从那时起,我就对这个话题很感兴趣,所以我想进行另一个基准测试,这个测试也试图测量真实世界的性能,同时尽可能保持客观和可靠。

结果

您可以在这里找到基准测试结果。

安装

您也可以简单地下载或克隆此存储库,并通过运行以下命令通过Composer 安装它

$ composer require kocsismate/di-container-benchmarks:dev-master

使用方法

Docker 的使用方法

作为先决条件,您的机器上必须安装Docker Compose 和至少 Docker 17.06 CE,才能使用此基准测试方法。

.env.dist 文件复制到 .env,并随意覆盖其中的值。现在,您可以运行

./benchmark.sh docker

来执行测量。

HTML 输出将生成在 "docs" 目录中。

在 AWS EC2 上的使用方法

作为先决条件,您的机器上必须安装Terraformgit,才能使用此基准测试方法。

首先,通过将 aws.tfvars.dist 复制到 build/infrastructure/config/aws.tfvars.dist 目录中的 aws.tfvars 来创建必要的配置文件

cp build/infrastructure/config/aws.tfvars.dist build/infrastructure/config/aws.tfvars

然后,覆盖其中的值

  • access_key:您的 AWS 账户的访问密钥
  • secret_key:您的 AWS 账户的秘密访问密钥
  • ssh_key_name:您添加到 EC2 的密钥对名称
  • ssh_private_key:您的私钥文件名
  • region:默认为 "eu-central-1",但您应选择您所在地区最接近的一个
  • image_name:EC2 映像的名称
  • image_architecture:EC2 映像的 CPU 架构(例如 x86_64 或 arm64)
  • instance_type:默认为 "C5.large"(此实例类型不在免费层范围内!)

最后,您必须将您的私钥复制到 "build/infrastructure/config" 目录中,文件名与 ssh_private_key 设置中定义的名称相匹配。

现在,您已经准备就绪

./benchmark.sh aws

HTML 输出将生成在 "docs" 目录中。

在您的宿主机上的使用方法

如果上述方法都不适用于您,则在运行基准测试之前,您必须采取几个步骤

  • 安装一个 Web 服务器,并配置它以能够提供 "public/index.php" 服务
  • 至少安装 PHP 8.0,并启用 OPcache 和预加载
  • 安装 Composer
  • BENCHMARK_URL 环境变量设置为 "public/index.php" 可用的 URL。例如
export BENCHMARK_URL=http://localhost/index.php

现在,您只需输入以下内容即可运行基准测试

.\benchmark.sh host

如果您不想将基准测试 URL 作为环境变量指定,您也可以将其作为参数传递

./benchmark.sh host http://localhost/index.php

从浏览器使用

您甚至可以从浏览器手动运行测试。当基准测试的Docker容器正在运行时,只需访问 localhost:8090,否则您需要定位到上一节中提到的 BENCHMARK_URL URL。有关更多信息,请参阅相关URL,它提供了详细的说明。

贡献

有关详细信息,请参阅 CONTRIBUTING

支持

有关详细信息,请参阅 SUPPORT

致谢

许可证

MIT许可(MIT)。有关更多信息,请参阅 许可文件