什么时候 .php 文件太大了? [关闭]
Posted
技术标签:
【中文标题】什么时候 .php 文件太大了? [关闭]【英文标题】:When is a .php file too large? [closed] 【发布时间】:2013-05-30 01:57:47 【问题描述】:我正在编写一个 php 类。目前有 1,000 行代码,文件大小为 46 KB。这不是一个疯狂的大小,但这让我开始思考。
问:由于文件大小和/或 PHP 文件中包含的代码量,性能会在什么时候开始受到影响?
【问题讨论】:
数量不如质量重要。如果您在任何地方都有相同代码块的复制/粘贴,那么您做错了。创建一个函数。使用 switch 语句。嵌套如果。我更关心创建质量代码而不是数量。 @sreservoir,去别处浪费你的时间。 @Brad 为什么他说什么? @ButtleButkus 他说“比伯竞选总统!” 【参考方案1】:对于 php,如果每 100 行有 10 个文件,或者每 1000 行有 1 个文件,则没有明显差异(特别是如果您使用任何操作码缓存)。
但从可维护性的角度来看,最好将类职责拆分为多个。
【讨论】:
-1,由于 PHP 使用词法解析器将代码转换为操作码,每个文件存在显着差异。 @Sébastien Renauld:你能证明你的话并证明每 100 行解析 10 个文件比 1000 行的单个文件需要更长的时间(?)?请记住,您的想法是专门指向一个解析步骤,所以如果您尝试证明它(我非常怀疑您会这样做) - 然后只测量解析步骤(并排除其他所有内容,即运行时)。 pastebin.com/6juAXCGb ,使用任何旧的类常量初始化,它将创建 1000 个文件。 1000 个文件的运行时间约为 0.150 微秒,其中一个文件的运行时间约为 0.080 微秒。这是在禁用 APC 的情况下运行的(这很重要) @Sébastien Renauld:1. 它是 1 个文件对 10 个文件(不是 1000 个文件)。 2. 您说由于解析器存在显着差异,而如果您只是运行文件,则总时间是:IO、解析、运行时的总和。如果你想成为一个 100% 精确的人(我希望你想成为 - 否则你不会发表评论) - 然后按照 你的 的话并提供测试来证明 有任何显着差异解析(将完全相同数量的代码放在一个文件中并拆分为 10 个文件)。你知道解析和运行的区别吗?我希望你这样做。【参考方案2】:就像其他人建议的那样,文件大小的主要关注点应该是可读性和保持代码库的可理解性。
但是,关于您最初关于 PHP 文件大小和性能的问题,这取决于所需的性能类型。对于不经常执行的 PHP 代码——例如通过命令行在客户端机器上执行的 PHP 程序,而不是由访问者加载网页——大文件大小可能并不明显。
相比之下,在高性能场景中,即使是很小的 PHP 文件也会消耗大量的系统资源。 PHP 性能的普遍问题是促使 Facebook 编写 their own JIT virtual machine 来执行 PHP 代码的原因——因为随着 Facebook 规模扩大,曾经可以接受的 PHP 性能变得可怕。
以上对于一般优化来说是正确的——如果没有更广泛的背景来分类,很难在性能好坏之间划清界限。如果您担心 PHP 代码的性能(无论是否与文件大小相关),我建议您使用像 Xdebug 这样的 PHP 分析器并监控服务器上的系统资源。
编辑,在Sébastien Renauld 的建议下,我将以下有关 PHP 和操作码缓存的信息添加到我的答案中。不过,我不想全部自己写,我想指出这个*** question that covers nearly the same topic.的公认答案@
【讨论】:
这比其他任何答案都更好地解决了每一点。 +1,顺便提一下操作码缓存对“文件数和性能”的影响。 您的答案跳过了介于“通过命令行在客户端计算机上执行”和“Facebook”之间的 99.9% 场景。 我很抱歉。我应该添加什么让它变得更好? 在这些情况下,假设使用了操作码缓存,那么代码的组织方式是次要的。【参考方案3】:我不是任何方面的专家,但我会说,在文件大小占 PHP 内存限制的很大一部分之前,您可能不会遇到问题。
我会告诉你,我在一个 PHP 文件中有一堆乱七八糟的代码。我刚查了一下,是 11,487 行。
该文件和另一个 2,056 行的文件都包含在我的开发站点的每个页面中。
我没有发现明显的性能问题。
也许我应该解释一下为什么我有这么大的文件。
我专注于让整个程序正常运行。我决定只为大多数类使用那个文件,这样我就可以轻松地搜索它并在任何类中进行更改,而无需查找文件。完成后,我会将所有类拆分为单独的文件,并使用自动加载仅加载所需的类。这可能不会持续几周,但当我这样做时,我会在前后做一些基准测试,看看是否有任何性能差异,但我怀疑会有。
现在,我网站上的每个页面都会加载该文件。我刚刚加载了主页,根据 Chrome 花了 102 毫秒。一个实际使用大量类并执行一些数据密集型工作并与 mysql 交互的页面耗时 279 毫秒。
所以在我看来,文件大小在比我的 11,487 行大得多之前并不重要。为了速度,您需要更多地关注优化代码。
例如,我刚刚问了一个关于数组处理的问题,其中一些解决方案让我的代码运行超过 5 分钟、大约 30 秒,而一些解决方案则在大约 280 毫秒时运行。不用担心文件大小!
【讨论】:
以上是关于什么时候 .php 文件太大了? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Qt 对于我的带宽上限来说太大了。我的替代方案是啥? [关闭]