使用结果缓存和不使用结果缓存对我的 php 函数进行计时

问题描述 投票:0回答:2

我一直在尝试测量我的一个 php 函数在使用结果缓存和不使用结果缓存时所花费的时间。

我遇到了麻烦,因为结果中先运行的那个会提供更多时间,因此结果不是决定性的。

这是我的代码的一部分-

     /**
     *
     * @param InputInterface $input
     * @param OutputInterface $output
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
//        $this->withoutCache($output);
        $this->withCache($output);
        $this->withoutCache($output);
    }

输出-

RUN 1 - 
withoutCache: 0.10952067375183
withCache: 0.077319145202637

RUN 2 - 
withCache: 0.17031812667847
withoutCache: 0.042220115661621

我正在使用 symfony 框架,我正在测试使用缓存是否会对每个查询有很大帮助。 Symfony 使用 Doctrine ORM 和 redis 作为结果缓存。

php symfony redis doctrine profiling
2个回答
0
投票

您可能正在初始化一些对象或执行一些与实际过程无关的其他工作,这就是为什么第一个总是需要更多时间的原因。

在进行基准测试之前。

  1. 确保所有对象均已创建,并且仅测量实际过程所需的时间。
  2. 还尝试在多线程环境中运行它们以获得最佳数字。

希望这有帮助


0
投票

第一次运行总是需要初始化与数据库的连接,因此需要更多时间来处理。之后所有后续查询将使用相同的连接。要验证,请创建一个循环,在其中运行多次测试。

© www.soinside.com 2019 - 2024. All rights reserved.