hoathis / bench-bundle
此包已被 废弃 且不再维护。未建议替代包。
Hoa\Bench Symfony 2 扩展包。
dev-master
2014-09-21 13:51 UTC
Requires
- php: >=5.3.3
- hoa/bench: *
- symfony/config: >=2.3.6,<2.6.0
- symfony/console: >=2.3.6,<2.6.0
- symfony/dependency-injection: >=2.3.6,<2.6.0
- symfony/http-kernel: >=2.3.6,<2.6.0
- twig/twig: ~1.0
Requires (Dev)
- atoum/atoum: dev-master
This package is auto-updated.
Last update: 2021-10-04 11:06:50 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。此外,Hoa 致力于成为工业界和学术界之间的桥梁。
Hoathis\BenchBundle 
安装
将这些行添加到您的 require-dev
部分
{ "require-dev": { "hoa/core": "*@dev", "hoa/bench": "*@dev", "hoathis/bench-bundle": "dev-master" } }
然后安装依赖项
$ composer update hoathis/bench-bundle
并将 BenchBundle
添加到您的 AppKernel
//app/AppKernel.php class AppKernel extends Kernel { … public function registerBundles() { if (in_array($this->getEnvironment(), array('dev', 'test'))) { … $bundles[] = new \Hoathis\Bundle\BenchBundle\BenchBundle(); } return $bundles; } }
如何使用
Bench 服务
BenchBundle
将自动设置一个 bench
服务,您可以在 PHP 代码中使用它来基准测试应用程序的某些部分。结果将被汇总并在配置文件中报告。
<?php namespace Hoathis\BenchDemoBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class DemoController extends Controller { public function indexAction() { $this->container->get('bench')->renderView->start(); $response = $this->render('HoaDemoBundle:Welcome:index.html.twig'); $this->container->get('bench')->renderView->stop(); return $response; } }
在上面的例子中,我们创建了一个名为 renderView
的标记,用于测量渲染 Twig 模板所需的时间。
您可以通过简单地分配一个唯一的名称并按需嵌套它们来创建多个标记
public function indexAction() { $this->container->get('bench')->fetchUsers->start(); $users = … foreach($users as $user) { $this->container->get('bench')->fetchMessages->start(); $user->messages = … $this->container->get('bench')->fetchMessages->pause(); } $this->container->get('bench')->fetchMessages->stop(true); $this->container->get('bench')->fetchUsers->stop(); $this->container->get('bench')->renderView->start(); $response = $this->render('HoaDemoBundle:Users:index.html.twig', array('users' => $users)); $this->container->get('bench')->renderView->stop(); return $response; }
如前例所示,您有三个方法来控制标记状态
Hoa\Bench\Mark::start()
:启动或暂停一个标记,Hoa\Bench\Mark::pause($silent = false)
:暂停一个标记,Hoa\Bench\Mark::stop($silent = false)
:停止一个标记。
您还可以使用它们的 原生 API 获取关于标记的更多信息。
Twig 辅助函数
BenchBundle
还添加了一个 Twig 辅助函数,您可以在模板中使用标记
<ul> {% benchstart 'usersLoop' %} {% for user in users %} <li> {{ user.username }} {% benchstart 'messagesCount' %} <span> {% if user.messages|length %} No new mesages {% else %} {{ user.messages|length }} new message(s) {% endif %} </span> {% benchpause 'messagesCount' %} <li> {% endfor %} {% benchstop 'messagesCount' %} {% benchstop 'usersLoop' %} <ul>
这些标记的结果也将显示在 Web 分析器中。
控制台辅助函数
最后,BenchBundle
将配置一个 bench.helper
服务,您可以在控制台命令中使用它来访问标记
<?php namespace Hoa\DemoBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class TestCommand extends ContainerAwareCommand { public function __construct($name = null) { parent::__construct($name ?: 'hoa:bench:demo'); } protected function execute(InputInterface $input, OutputInterface $output) { $bench = $this->getContainer()->get('bench.helper'); $bench->start('foo'); … $bench->start('bar'); … $bench->stop('bar'); $bench->stop('foo'); $bench->summarize($output); } }
API 与 bench
服务相同,但使用辅助函数时,您将标记的名称作为 start
/pause
/stop
方法的参数传递。
当您调用 summarize
方法时,结果将在命令的输出中渲染
$ app/console hoa:bench:demo # ... +------+-----------------+-----------------+ | Mark | Time | Percent | +------+-----------------+-----------------+ | foo | 4.0034830570221 | 100 | | bar | 2.001620054245 | 49.996965785434 | +------+-----------------+-----------------+