为什么file_get_contents比memcache_get更快?

问题描述 投票:8回答:3

[我正在使用file_get_contents从磁盘加载XML文件,作为测试,我发现可以在3.99秒内使用file_get_contents() 1,000次加载156K文件。我将负责加载的部分细分为子类,并用memcache层替换了它,在我的开发机上发现我可以在4.54秒内完成1000次相同文档的加载。

我感谢file_get_contents()会进行一些缓存,但是看起来它实际上比众所周知的缓存技术要快。在单个服务器上,file_get_contents()的性能是否可以达到?

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

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

我正在使用file_get_contents从磁盘加载XML文件,作为测试,我发现可以在3.99秒内使用file_get_contents()加载1,000次文件156K。我将执行...

php file-io memcached php-internals
3个回答
8
投票

因为file_get_contents mmap是文件,所以您只有几个文件系统调用,这将最终存储在文件系统缓存中。 memcache涉及对memcached的进程外调用(以及在集群实现中的服务器外)。


3
投票

file_get_contents是检索文件的最简单方法。基础操作系统(尤其是linux)已经具有有效的缓存机制。您所做的任何其他操作只会增加开销,并使速度降低。


0
投票

在memcache中存储XML文件对我来说意义不大。

© www.soinside.com 2019 - 2024. All rights reserved.