第一行/feature-science

此包的最新版本(dev-master)没有可用的许可证信息。

一个PHP 5.4库,用于基准测试/重构大型代码变更以及在生产环境中的性能。

dev-master 2014-11-13 21:46 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:11:29 UTC


README

Build Status

一个PHP 5.4库,用于重构、性能和问题测试生产项目中的新/旧代码。

如何使用它?

例如,假设您正在更改缓存后端。以下代码示例将帮助您在负载下测试和比较新代码的性能。

$experiment = new \FeatureScience\Test('cacher.save', [
    'control'   => function() { $this->filecache->save() }, // old code
    'candidate' => function() { $this->memcached->save() }, // new code
]);

$experiment->run();

它是如何工作的?

$experiment->run()将从数组中随机选择一个测试主题,运行它并返回结果。在幕后,Test::run将收集两种行为的持续时间、内存使用和异常,并将其保存到storage中。
为了避免每次请求都写入文件而加载服务器,FeatureScience将临时数据存储在APC存储中,并在实验运行100次后,将结果保存到指定的目录。您可以通过调用$experiment->setPayloadLimit(number).来更改此限制。

配置

默认情况下,payload.saver将结果保存到系统临时目录。但您可以根据自己的需求配置路径。

注意:请记住确保该路径可由Web服务器写入。

use FeatureScience\PayloadSaver;

\FeatureScience\DI::set('payload.saver', new PayloadSaver('/path/to/save/results'));

查看结果

您可以使用您喜欢的编辑器查看,或者通过输入命令查看

vendor/bin/feature-science /path/to/feature.name.json

它看起来像这样

{
    "name":"array.performance",
    "control":{
        "duration":0.01359,
        "exception":null
    },
    "candidate":{
        "duration":0.00261,
        "exception":{
            "message": "Ooops! Something went wrong",
            "code": "503",
            "file": "test.php",
            "line": "27"
        }
    }
}

通过Composer安装

将FeatureScience添加到composer.json中,并运行安装。

{
    "require": {
        "firstrow/feature-science": "dev-master"
    }
}

开销

每个基准测试运行测试代码1000次。

php benchmarks/clean.php       13.37s
php benchmarks/experiment.php  13.80s

因此,对于每个1000个请求,它的总执行时间约为+0.4秒,或者每个请求0.0004毫秒。

待办事项

  • 跟踪内存使用情况
  • 保存最小、平均、最大持续时间

链接

灵感来自ruby gem dat-science
此外,您可能还会发现athletic很有用