我有一个服务器,我试图优化速度(php/mysql)。从速度的角度来看,保存一个包含我所有函数的大文件,以便只包含一个文件是否更好?或者更好的是拥有许多小的、任务优化的包含,这将取决于手头的工作(该解决方案产生4/5甚至6个文件来包含)。
此外,我确实使用pear/MDB2库进行数据库访问。与使用普通的php调用相比,这会增加任何开销吗?(包括pear/MDB2至少是一个包含加号)
提前感谢大家!
发布于 2010-10-03 07:12:17
在速度方面,这不会有太大影响。除非被调用,否则函数将被忽略,就像文件中任何不应该加载的代码一样。它确实要经过解析器,但我们讨论的速度是你永远不会注意到的。
更重要的是可访问性和可维护性。将你的代码分成不同的文件会让你,可能是你的同事和你的文本编辑器(在大文件中高亮显示代码可能会变得非常慢)变得容易得多。
不过,你可以看看PHP的autoload。这允许您调用该类中的任何类或函数,而不必将其明确包含在脚本中。这节省了代码行,并且只有在需要时才会包含和加载。但除了这是非常方便的代码方面,它不会使它更快/更慢。
发布于 2010-10-03 07:50:48
这取决于文件和函数的大小。对于一些小的脚本,我会说:为了简单起见,我会选择一个文件,并使其易于复制。
这样想吧:
当然,我们忘记了缓存、虚拟文件系统之类的东西,但争论仍然存在。
最后问问你自己:你是不是更愿意通过代码行搜索来找到你必须修改/修复的函数?或者你更愿意把它们分开放在一些小而清晰的文件中呢?
发布于 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。
https://stackoverflow.com/questions/3847839
复制相似问题