第一行 / feature-science
此包的最新版本(dev-master)没有可用的许可证信息。
一个PHP 5.4库,用于基准测试/重构大型代码变更以及在生产环境中的性能。
dev-master
2014-11-13 21:46 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- henrikbjorn/phpspec-code-coverage: dev-master
- phpspec/phpspec: 2.0.*@dev
This package is not auto-updated.
Last update: 2024-09-24 03:11:29 UTC
README
一个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很有用