php – 为什么file_get_contents比memcache_get更快?

前端之家收集整理的这篇文章主要介绍了php – 为什么file_get_contents比memcache_get更快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用file_get_contents从磁盘加载 XML文件,作为测试,我发现我可以在3.99秒内使用file_get_contents()1000次加载156K文件.我已经将用于加载的部分子类化并用memcache层替换它,并且在我的开发机器上找到我可以在4.54秒内完成1000个相同文档的加载.

我很欣赏file_get_contents()会做一些缓存,但看起来它实际上比一个众所周知的缓存技术更快.在单个服务器上,file_get_contents()的性能是否可以得到?

我通过Macports,OS X 10.6.8使用PHP 5.2.17.

编辑:我发现这个大小的XML文档,使用MEMCACHE_COMPRESSED标志有一个小小的好处.通过memcache进行的1,500次加载是在6.44秒(带压缩)而不是6.74(没有)完成的.但是两者都比file_get_contents慢,后者在5.71秒内执行相同数量的加载.

因为file_get_contents mmaps文件,因此您只需要几个文件系统调用,这将最终在文件系统缓存中.内存缓存涉及对memcached(以及群集实现上的服务器外)的进程外调用.

file_get_contents()的性能至关重要地取决于文件系统的类型,例如,NFS挂载的文件系统上的文件没有被映射,并且此访问可能慢得多.同样在多用户服务器上,文件系统缓存可以被其他进程快速刷新,而memcached缓存几乎肯定会在内存中.

猜你在找的PHP相关文章