为了账号安全,请及时绑定邮箱和手机立即绑定

OPcache开启后,include/require请求一个文件时,是先到缓存中查询该文件是否已经编译过?

OPcache开启后,include/require请求一个文件时,是先到缓存中查询该文件是否已经编译过?

PHP
这个名字没人起 2018-04-23 15:31:24
查看完整描述

1 回答

?
老糊涂仙

TA贡献10条经验 获得超2个赞

就算没有启用opcache,操作系统也会把热点文件缓存在内存中(buffers/cache),Linux上执行free可见buffers/cache占用的内容.Windows资源监视器内存标签下的"备用"内存就相当于Linux的磁盘缓存buffers/cache.

opcache的好处在于省去了PHP源代码到opcode中间码的转换过程,并且保证脚本对应的opcode都保存在内容中.

而C开发的PHP框架Yaf在编译时就已经被GCC优化生成机器码,在PHP服务(PHP-FPM/Apache MOD PHP)启动时就被加载到内存,opcode的性能跟机器码的性能差距很大,就算是Java中编译时优化过的bytecode,跟JIT运行时编译生成的机器码相比,差距也很大,而PHP的opcode在运行时生成,为了快速一般都不做什么优化,所以opcode跟机器码性能差距应该比Java的bytecode还要大.

查看完整回答
反对 回复 2018-04-23
  • 1 回答
  • 0 关注
  • 1267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信