首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP的单个大文件还是许多小文件?

PHP的单个大文件还是许多小文件?
EN

Stack Overflow用户
提问于 2010-10-03 07:00:08
回答 3查看 3.8K关注 0票数 3

我有一个服务器,我试图优化速度(php/mysql)。从速度的角度来看,保存一个包含我所有函数的大文件,以便只包含一个文件是否更好?或者更好的是拥有许多小的、任务优化的包含,这将取决于手头的工作(该解决方案产生4/5甚至6个文件来包含)。

此外,我确实使用pear/MDB2库进行数据库访问。与使用普通的php调用相比,这会增加任何开销吗?(包括pear/MDB2至少是一个包含加号)

提前感谢大家!

EN

回答 3

Stack Overflow用户

发布于 2010-10-03 07:12:17

在速度方面,这不会有太大影响。除非被调用,否则函数将被忽略,就像文件中任何不应该加载的代码一样。它确实要经过解析器,但我们讨论的速度是你永远不会注意到的。

更重要的是可访问性和可维护性。将你的代码分成不同的文件会让你,可能是你的同事和你的文本编辑器(在大文件中高亮显示代码可能会变得非常慢)变得容易得多。

不过,你可以看看PHP的autoload。这允许您调用该类中的任何类或函数,而不必将其明确包含在脚本中。这节省了代码行,并且只有在需要时才会包含和加载。但除了这是非常方便的代码方面,它不会使它更快/更慢。

票数 7
EN

Stack Overflow用户

发布于 2010-10-03 07:50:48

这取决于文件和函数的大小。对于一些小的脚本,我会说:为了简单起见,我会选择一个文件,并使其易于复制。

这样想吧:

  • 每次读取分离的小文件都意味着一次磁盘操作,而且每次磁盘操作都相当慢-即使在服务器上也是如此。
  • 只读一次会更快。但是,如果读取的文件有几兆字节大小,服务器每次都会读取它(并且需要一段“长”时间),并且只有一小部分文件实际用于手头的任务。这似乎是对资源的极大浪费--尤其是内存。

当然,我们忘记了缓存、虚拟文件系统之类的东西,但争论仍然存在。

最后问问你自己:你是不是更愿意通过代码行搜索来找到你必须修改/修复的函数?或者你更愿意把它们分开放在一些小而清晰的文件中呢?

票数 4
EN

Stack Overflow用户

发布于 2010-10-03 07:29:56

我的项目通常包含几十个文件,有些文件很小,有些文件很大。几年前,我自己包含了它们,这导致了两个问题:非常长的包含列表(对于大多数任务来说,它们大多数都是多余的),依赖问题(代码对加载顺序非常敏感)。然后我尝试了一个简单的自动加载器。

请参阅http://pl2.php.net/manual/en/ref.spl.php

它使生活变得更容易,因为它自动魔术地只包含必要的文件。默认的spl_autoload非常快,但会导致类名中的大写字母出现问题。此外,它要求文件的命名与类完全一样,如果你决定在一个文件中放入多个类,这可能是一个问题(有时这是有原因的)。我用PHP编写了自己的自动加载器,它执行非常高级的类映射。首先,我预计它会显着减慢我的应用程序。我做了一些测试,这是我发现的。

与正常的数据处理相比,文件包含算不了什么。这几乎是微不足道的,因为每个文件只包含一次,而任何愚蠢的foreach操作可能会运行数千次。请注意,所有的文件请求并不是真的从服务器HD读取文件,它们使用的内存缓存比任何PHP代码循环持续的时间都要短(因为操作系统调用是用C编写的)。

我的观点是:忘了它吧。无所谓了。唯一会对性能造成影响的就是加载过多的冗余文件--它们使用服务器内存,在高负载的情况下可能会造成影响。使用autoloader --你会忘记include或require。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3847839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档