【问题标题】:Is output buffering more expensive than FS hit?输出缓冲是否比 FS 命中更昂贵?
【发布时间】:2011-02-19 19:14:39
【问题描述】:

就是这样。 OB比包含文件重吗?

【问题讨论】:

  • 我认为您要问的问题是“我如何在 PHP 中对性能进行基准测试”。
  • @艾伦。不,我知道如何进行基准测试。我要求其他已经拥有的人(因为我知道有人)告诉我他们发现了什么。感谢您的评论。

标签: php include filesystems overhead output-buffering


【解决方案1】:

输出缓冲在 RAM 中工作。命中文件系统可能只会命中 RAM(缓存),但它有可能命中磁盘。每次访问磁盘时,您都会发现与直接访问 RAM 相比,速度至少慢了一个数量级。

【讨论】:

  • ... 以及占用磁盘并阻止其他 FS 操作并将磁盘磁头从稍后需要移回的区域移开。
  • 是的,但是我有一个已经证明非常有知识的人说额外的 USE IN AMOUNT 内存抵消了 FS 访问,使 FS 成为更好的选择。想法?
  • @Spot,这完全取决于您的系统资源限制。一般来说,避免使用磁盘。如果你做了一些导致你耗尽所有 RAM 并开始交换的事情,那么你并没有避免磁盘。例如。输出缓冲 30 MB 响应不同于输出缓冲常规网页。
【解决方案2】:

我会说取决于你的系统上什么是昂贵的......如果你绝对必须使用尽可能少的内存,那么直接写入磁盘可能是你唯一的选择,尽管底层系统的“磁盘写入” ' 仍然会在可能的情况下分块写入,因为您可能不会为每个字符调用 'write'。

最后,在合理范围内进行缓冲更快……最简单的测试方法是写出一大串字符,一次一个字符,然后将字符串分成几个合理的块。

考虑到这一点,我想不出你为什么不至少在某种程度上缓冲你的输出!如果您所做的只是将文件从一个地方复制到另一个地方,那么使用系统调用(如果可用)可能比在 PHP 中读取、缓冲和写入要快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多