巩义旅游网站设计公司,建设俄语2p2网站,专业制作网页公司,重庆市设计院Nikita Popov 在他的演讲中谈了几个PHP 程序中和performance相关的point。1.PHP使用shared memory, preload的方式事先分配#xff0c;而只有在所有的处理结束之后#xff0c;share memory 才会断开和所有进程或者thread之间的联系。光是opcode#xff0c;FPM的设定还不足以…Nikita Popov 在他的演讲中谈了几个PHP 程序中和performance相关的point。1.PHP使用shared memory, preload的方式事先分配而只有在所有的处理结束之后share memory 才会断开和所有进程或者thread之间的联系。光是opcodeFPM的设定还不足以提高performance.用class,并且尽量用继承既有class的方式创建新的class 可以比较好的利用资源用array 比用class要消耗内存资源PHP中有两种cache方式一种是ACPU一种是opcache,ACPU对于比较大的数据handle起来比较吃力只能操作一些较小的原生的typearray 比class 要消耗内存其中[ foobar, barbaz] 这种形式的array最为消耗内存相比之下packed array, [bar,baz]略少可以参考下图memoUsage_php.pngType check 对于比较多loop的程序反而是有优化performance作用的通常认为不标注变量的type,php在运行的初期不做type check, 运行的performance更好但在使用opcache的情况做type check可以提升2.5倍的执行速度typeOptimization.jpgGC会影响程序运行如果关闭GC可以提升运行速度GC的运行原理在7.3之前是预先开了10000root buffer,然后再GC去回收7.3之后采用动态GC阈值稍微提高了一些效率。另外GC的mark,swap 方式在变量count到0的情况下销毁而对于一些传址而非传值的函数无法count 到0可能会产生遗漏(可能会发生memory leak)GC.jpgnamespace的定义一些含糊的namespace 定义使得VM查找class或者function变得迂回建议在一些namespace面前加上\ 明确命名空间。(这个目前7.4之后会给出compiler error提示而矫正)namespaceFallback.jpg