减少包括/需要增加性能的数量?

时间:2010-08-06 12:59:56

标签: php performance

脚本性能调优的最佳做法是什么?

这一个?

require_once("db.php");

if (!is_cached()) {
  require_once("somefile.php");
  require_once("somefile2.php");
  //do something
} else {
  //display something
}

还是这个?

require_once("db.php");
require_once("somefile.php");
require_once("somefile2.php");

if (!is_cached()) {
  //do something
} else {
  //display something
}

是否值得将包含/要求放入流量控制结构或不?

谢谢

5 个答案:

答案 0 :(得分:2)

包含和要求的设计部分是为了让您能够组织代码并使维护软件更容易。虽然从技术上讲,使用包含性能会受到影响,但它可以忽略不计,然后通过提高软件的可维护性来抵消。特别是如果您使用操作码缓存。我不担心这一点,并将其归结为过早优化。

答案 1 :(得分:2)

如果所需的文件很大,并且没有可用的字节代码缓存,那么它有时是值得的。

然而,问题不在于include()语句的数量,而在于包含的数据量。您在请求中包含的未使用的代码越少越好。 单片包含的一个很好的补救措施是将代码库拆分为较小的代码库,或者,如果您的应用程序主要面向对象,则使用PHP的autoloading功能。

我见过共享托管软件包,其中非纠结的整体包含可以节省半秒 - 这是一个很多

此外,包含的PHP代码会被解析并占用内存,无论它是否已执行。带有精益物体的清洁结构通常是最佳方式。

答案 2 :(得分:2)

是的,它会提高性能,与其他人说的相反,影响可能不容忽视。

当您包含/ require文件时,PHP将检查所有已定义的include_paths,直到找到该文件或者没有其他内容可供检查。根据包含的pathes数量和要包含的文件数量,这将对您的应用程序产生严重影响,尤其是在预先包含每个文件时。懒惰包括(比如你的第一个例子)或 - 甚至更好 - using the Autoloader is advisable.

相关阅读更详细地解决了这个问题:

*那里给出的建议适用于任何应用程序或框架 功能

答案 3 :(得分:1)

是的,它会提高性能,但它非常少,所以不值得。

答案 4 :(得分:0)

对包含文件使用绝对路径将显着提高性能。使用Apache Benchmark进行测试,看看是否没有。