测试tmpfs性能

创建一个tmpfs

mount tmpfs /data/app/www/tmpfs_www/ -t tmpfs -o size=50m

讲php文件放到该目录下,然后对比php执行效果,用xhprof获取运行数据

使用tmpfs

关apc

 

 

Total Incl. Wall Time (microsec): 34

Total Incl. CPU (microsecs): 26

Total Incl. MemUse (bytes): 2311

Total Incl. PeakMemUse (bytes):2304

 

 

开apc

 

Total Incl. Wall Time (microsec): 26

Total Incl. CPU (microsecs): 16

Total Incl. MemUse (bytes): 786

Total Incl. PeakMemUse (bytes):798

 

不用tmpfs

关apc

Total Incl. Wall Time (microsec): 33

Total Incl. CPU (microsecs): 26

Total Incl. MemUse (bytes): 2310

Total Incl. PeakMemUse (bytes):2304

开apc

Total Incl. Wall Time (microsec): 22

Total Incl. CPU (microsecs): 16

Total Incl. MemUse (bytes): 786

Total Incl. PeakMemUse (bytes):798

得出结果,在只读环境中,是否启用tmpfs区别不大,应该和linux的内存管理方式有关

 

分别进行php读取tmpfs和普通目录的文件测试,

循环100w次file_get_contents:

在tmpfs下的文件

用时28s

在普通目录下的文件

用时29s

100w次file_exists:

tmpfs下

19s

普通目录

20s

100w次file_put_contents,几十字节

在tmpfs下的文件

用时41s

在普通目录下的文件

用时415s

100w次error_log写入指定文件,几十字节

在tmpfs下的文件

用时29s

在普通目录下的文件

用时36s

结论,tmpfs在写入数据时由于是内存操作,会非常快速度

发现file_put_contents和error_log在循环调用写入文件的时候,性能差距非常大。。。

看了下两个函数的源码,都是利用 php_stream_write实现文件写入,但file_put_contents的功能更多,源码里有对锁,stream,数据类型的不同处理,可能是这些原因导致性能比error_log慢。

 

你可能感兴趣的:(PHP,linux,Stream,测试,File)