微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/php/137927.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐