我正在编写一个 PHP 类。目前有 1,000 行代码,文件大小为 46 KB。这不是一个疯狂的尺寸,但这让我开始思考。
问:由于文件大小和/或 PHP 文件中包含的代码量,性能会在什么时候开始受到影响?
对于 php,如果每 100 行有 10 个文件,或者每 1000 行有 1 个文件,则没有明显差异(特别是如果您使用任何操作码缓存)。
但从可维护性的角度来看,最好将类职责拆分为多个。
就像其他人建议的那样,文件大小的主要关注点应该是可读性和保持代码库的可理解性。
但是,关于您关于 PHP 文件大小和性能的原始问题,这取决于所需的性能类型。对于不经常执行的 PHP 代码——例如通过命令行在客户端机器上执行的 PHP 程序,而不是由访问者加载网页——大文件大小可能不会被注意到。
相比之下,在高性能场景下,即使很小的 PHP 文件也会消耗大量的系统资源。PHP 性能的普遍问题是促使 Facebook 编写自己的 JIT 虚拟机来执行 PHP 代码的原因——因为 PHP 曾经可以接受的性能随着 Facebook 的规模扩大而变得可怕。
以上对于一般的优化来说是正确的——如果没有更广泛的背景来分类,很难在性能好坏之间划清界限。如果您担心 PHP 代码的性能——无论是否与文件大小相关——我建议使用像Xdebug这样的 PHP 分析器并监视服务器上的系统资源。
编辑,在Sébastien Renauld的建议下,我将以下有关 PHP 和操作码缓存的信息添加到我的答案中。不过,我不想全部自己写,而是想指出这个StackOverflow 问题的公认答案,它涵盖了几乎相同的主题。
我不是任何事情的专家,但我会说你可能不会遇到问题,直到你的文件大小是你的 PHP 内存限制的很大一部分。
我会告诉你,我在一个 PHP 文件中有一堆乱七八糟的代码。我刚查了一下,它是 11,487 行。
该文件和另一个 2,056 行的文件都包含在我的开发站点的每个页面中。
我没有看到明显的性能问题。
也许我应该解释为什么我有这么大的文件。
我专注于让整个程序正常工作。我决定只为大多数类使用那个文件,这样我就可以轻松地搜索它并在任何类中进行更改,而无需查找文件。完成后,我会将所有类拆分为单独的文件,并使用自动加载仅加载所需的类。这可能不会持续几周,但是当我这样做时,我会在前后做一些基准测试,看看是否有任何性能差异,但我怀疑会有。
现在,我网站上的每个页面都会加载该文件。我刚刚加载了主页,根据 Chrome 花了 102 毫秒。一个实际使用大量类并执行一些数据密集型工作并与 MySQL 交互的页面花费了 279 毫秒。
所以在我看来,文件大小在比我的 11,487 行大得多之前并不重要。为了速度,您需要更多地担心优化代码。
例如,我刚刚问了一个关于数组处理的问题,其中一些解决方案让我的代码运行超过 5 分钟、大约 30 秒,而一些解决方案则在大约 280 毫秒时运行。不用担心文件大小!