记录PHP代码——会影响性能吗?

4

我无法相信任何人通常会反对文档和注释,但在PHP中如何做到最佳实践(并且实际可行)呢?

在JavaScript中,您可以记录代码,然后运行一个最小化程序以生成用于生产的代码版本。在PHP中呢?额外的文本行是否会影响性能?是否应将文档保留在另一个文件中(我认为这对于API和框架非常重要,但会减慢开发速度)?

编辑:

我的逻辑是它会因为文件大小更大而需要更长时间,并且会增加解析器排序的更多工作量(虽然可能很微不足道)。如果您有1000行代码和500行注释,是否应该放一个摘要版本,然后指向实际的文档页面?


是的,记录代码非常重要,我只是想知道最好的放置位置在哪里。谢谢大家。 - wag2639
10个回答

7

使用PHP(类似于ASP.NET),代码可以在服务器上编译,并生成HTML发送到客户端。

PHP源代码会即时编译成内部格式,可以由PHP引擎执行。为了加快执行时间并且不必每次访问网页都编译PHP源代码,PHP脚本也可以使用PHP编译器部署为可执行格式。

来源

在此过程中,注释将被忽略并且不会对程序产生影响。它们不会减慢编译器的速度,因此不会影响性能。

应该在代码中添加注释(适当的地方),并将注释与源代码保持一致。否则,它们很可能与代码不同步,变得毫无用处。


2
PHP和ASP.NET不同。ASP.NET只编译一次,而PHP在每个请求时都会编译。注释处理可能会增加一些时间,因为它们仍然需要被词法分析器检测和忽略,但这是微不足道的。然而,如果您使用APC,PHP将只编译文件一次并缓存已编译的版本并使用它。 - ryeguy

7
如果您假设每个注释字符的 CPU 成本为 O(1),并且您的代码有 4k,其中一半是注释,则将浪费 2k 的基本操作。对于现代处理器而言,一个基本操作约为 20 个时钟周期,但由于存在流水线优化,我们可以假设每个操作大约需要 5 个时钟周期。由于我们现在使用的是千兆赫的 CPU,因此在注释解析上浪费的时间约为 2k/1g * 5 ~= 1/10,000 秒。
请注释您的代码!
可忽略的元素:
- 4k 是一个分区块,因此磁盘读取被最小化。无论如何,您都必须去读取程序代码的磁盘。CPU 有足够的缓存,因此整个程序将保存在内存中,包括注释。 - 可能会发生上下文切换事件,但执行 PHP 代码的时间远远大于忽略注释的时间。 - 解释器必须维护状态,因此任何状态维护都不包括在处理时间内。为什么?因为一旦我们知道我们在注释中,我们只需继续阅读,直到检测到注释结束。每个字符的成本都是 O(1),除非开始/结束注释。 - PHP 的设置/拆卸执行被忽略,因为无论是否存在注释,都会尝试检测注释。因此,您的代码中缺少注释并不会使解释器加速。
请注释您的代码!

说到CPU周期等式中的磁盘读取,使用include("zlib:script.php.gz")解压php脚本可能会更快吗? - mario

3

不会影响性能,但会影响可读性。一位智者曾说:“编写注释时,要像下一个维护你代码的人是个知道你住址的杀人狂一样。”


1

最小化JavaScript是一个好主意,因为整个代码都会发送到客户端 - 对于有很多注释的代码或连接速度慢的客户端,这可能会导致处理延迟(其中“实质性”可能意味着几秒钟..)。

PHP不是这种情况 - 代码直接在服务器上执行,因此只有处理后的结果发送到客户端。虽然PHP预处理器解析代码时可能会有一些小的开销,但我希望这可以忽略不计 - 最多几毫秒。


1

为您的代码添加文档不会对性能产生任何影响(无论是负面还是正面)。记录您的代码非常重要,这样其他人(以及几个月后的自己)才能弄清楚正在发生什么。这可能会让词法分析器多花费一毫秒的时间,但这几乎不值得一提。


0

这将增加您的文件大小。但解析器会忽略它,因此不会影响执行时间等性能。

我认为普遍共识是在实际代码中进行注释。虽然我想你可以维护具有对代码的引用的单独文档文件,但我只能想象那将是多么繁琐。


0

毫无疑问,务必记录您的PHP代码……已经很难让人理解您所做的事情了。我想不到任何损害代码文档化的地方,而这些文档化的好处是完全超过了任何缺点。

我敢打赌,从几乎任何代码中删除注释都不会导致明显的速度提升。

所以,对于您的“最佳实践”的问题,答案是:不要删除注释。


0
主要的区别在于JavaScript必须发送到客户端,因此这些额外的字节会在传输过程中占用资源。而将文档发送给客户端并不是非常重要的。在服务器端的PHP中,这些注释将被解析器忽略。因此,您可以尽情地编写文档 :)

0

解析器会忽略它。保留文档并且不要吝啬于编写文档。注释越多越好。


$i ++; // 将 i 增加一// 有用的注释。 - Alister Bulman

0

在编写类/函数/变量等的注释时使用文档块,可以让支持代码建议/高亮的IDE在您编写时提供有关所使用资源的信息。此外,在创建文档方面,有各种工具可使用文档块自动化此过程;简而言之,如果您正确地进行注释,则已经创建了文档。

就效率而言,是的,解析器将在文件加载到内存中时过滤掉注释(我可能还要添加空格)。但是,这个过滤过程仅在服务器上运行一次,并且在PHP脚本本身运行之前运行,后者本身将花费相当长的时间来运行。这意味着用于执行预期PHP的时间比例将大大降低,因此效率下降将是可以忽略不计的。

此外,想想您将为您的继任者节省的时间;这已经足够理由了 ;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接