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缓存几乎肯定会在内存中.

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...