为什么构造一个Symfony Response需要这么长时间,占用那么多内存,我该怎么办?

测试脚本:

#!/usr/bin/php
<?php
require __DIR__.'/../www/autoload.php';

$start = microtime(true);
$mem = memory_get_usage(true);
$resp = new \Symfony\Component\HttpFoundation\Response();
$elapsed = (microtime(true)-$start)*1000;
$used_mem = memory_get_usage(true)-$mem;
echo number_format($elapsed,2)." ms\n";
echo number_format($used_mem/1024,1)." KiB\n";

输出:

2.25 ms
256.0 KiB

有趣的是,如果我将其循环放置,则成本不会增加太多:

$resp = [];
for($i=0; $i<100; ++$i) {
    $resp[] = new \Symfony\Component\HttpFoundation\Response();
}

6.73 ms
512.0 KiB

但是我只需要一个答复,所以这并不重要。

纵观构造Response,它几乎没有做任何事情。它只是初始化了一些变量。

2毫秒是我响应时间的重要部分,如果可能的话,我真的很想降低响应时间。

伊戈尔·潘托维奇(IgorPantović)

遇到此类问题时,通常应使用XDebug进行剖析:http ://www.xdebug.org/docs/profiler

通过向您显示每种方法花费了多少时间以及调用了多少次,它会告诉您“问题”的确切位置。

在这种情况下,“问题”是第206行,\ DateTime对象的构造,然后是\ DateTimeZone对象的构造。

要消除所有其他因素,请确保首先不进行自动加载,因此将测试修改为:

<?php

require 'vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php';
require 'vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/HeaderBag.php';
require 'vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ResponseHeaderBag.php';

$start = microtime(true);
$mem = memory_get_usage(true);
$resp = new \Symfony\Component\HttpFoundation\Response();
$elapsed = (microtime(true)-$start)*1000;
$used_mem = memory_get_usage(true)-$mem;
echo number_format($elapsed,2)." ms\n";
echo number_format($used_mem/1024,1)." KiB\n";

在我的机器上用206行进行测试

3.57 ms
0.0 KiB

使用Line 206进行的测试在我的计算机上被注释掉了

0.32 ms
0.0 KiB

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么构造一个Symfony Response需要那么长时间,占用那么多内存,我该怎么办?

来自分类Dev

为什么这段代码会占用那么多内存?

来自分类Dev

为什么这个查询这么慢,我该怎么办

来自分类Dev

为什么作曲家需要那么多内存?

来自分类Dev

为什么作曲家需要那么多内存?

来自分类Dev

为什么我的程序使用那么多的内存运行?

来自分类Dev

如果JPA实际上只是一个规范,那么我们该怎么办?

来自分类Dev

为什么我需要在这里显式编写一个构造函数?

来自分类Dev

为什么我们需要一个用户提供的const对象构造函数?

来自分类Dev

为什么我的Arduino类构造函数需要一个参数?

来自分类Dev

为什么我需要在这里显式编写一个构造函数?

来自分类Dev

为什么std :: for_each迭代器需要一个可复制构造的迭代器

来自分类Dev

为什么在这个Java通用子类中需要一个构造函数?

来自分类Dev

为什么`std :: pair <int,movable>`需要一个[deleted]`const&`复制构造函数?

来自分类Dev

为什么模型绑定器需要一个空的构造函数

来自分类Dev

为什么在扩展的抽象类中需要另一个构造函数?

来自分类Dev

C ++:没有匹配的调用函数:为什么需要一个空的构造函数?

来自分类Dev

我有一个 yaml 文件。我需要每天触发网站数据,我该怎么办?

来自分类Dev

为什么我们只有一个带有@Inject批注的构造函数?

来自分类Dev

为什么编译器需要复制构造函数,需要并拥有一个移动构造函数,却不使用其中任何一个?

来自分类Dev

删除一个空文件,为什么会有那么多sys调用?

来自分类Dev

如果构造不需要括号,该怎么办?

来自分类Dev

为什么我的UIImage占用这么多内存?

来自分类Dev

为什么我的UIImage占用这么多内存?

来自分类Dev

我的构建时间超过8个小时-该怎么办?

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

在一个非常简单的程序中检测到内存泄漏。该怎么办?

来自分类Dev

c#|| 我需要一个变量来控制另一个变量,但它们都在自己的范围内。我该怎么办?

Related 相关文章

  1. 1

    为什么构造一个Symfony Response需要那么长时间,占用那么多内存,我该怎么办?

  2. 2

    为什么这段代码会占用那么多内存?

  3. 3

    为什么这个查询这么慢,我该怎么办

  4. 4

    为什么作曲家需要那么多内存?

  5. 5

    为什么作曲家需要那么多内存?

  6. 6

    为什么我的程序使用那么多的内存运行?

  7. 7

    如果JPA实际上只是一个规范,那么我们该怎么办?

  8. 8

    为什么我需要在这里显式编写一个构造函数?

  9. 9

    为什么我们需要一个用户提供的const对象构造函数?

  10. 10

    为什么我的Arduino类构造函数需要一个参数?

  11. 11

    为什么我需要在这里显式编写一个构造函数?

  12. 12

    为什么std :: for_each迭代器需要一个可复制构造的迭代器

  13. 13

    为什么在这个Java通用子类中需要一个构造函数?

  14. 14

    为什么`std :: pair <int,movable>`需要一个[deleted]`const&`复制构造函数?

  15. 15

    为什么模型绑定器需要一个空的构造函数

  16. 16

    为什么在扩展的抽象类中需要另一个构造函数?

  17. 17

    C ++:没有匹配的调用函数:为什么需要一个空的构造函数?

  18. 18

    我有一个 yaml 文件。我需要每天触发网站数据,我该怎么办?

  19. 19

    为什么我们只有一个带有@Inject批注的构造函数?

  20. 20

    为什么编译器需要复制构造函数,需要并拥有一个移动构造函数,却不使用其中任何一个?

  21. 21

    删除一个空文件,为什么会有那么多sys调用?

  22. 22

    如果构造不需要括号,该怎么办?

  23. 23

    为什么我的UIImage占用这么多内存?

  24. 24

    为什么我的UIImage占用这么多内存?

  25. 25

    我的构建时间超过8个小时-该怎么办?

  26. 26

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  27. 27

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  28. 28

    在一个非常简单的程序中检测到内存泄漏。该怎么办?

  29. 29

    c#|| 我需要一个变量来控制另一个变量,但它们都在自己的范围内。我该怎么办?

热门标签

归档