Download - Zend Optimizer Plus(O+)
![Page 1: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/1.jpg)
Zend Optimizer Plus(Opcache) - laruence
13年11⽉月11⽇日 星期⼀一
![Page 2: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/2.jpg)
What it is
• Not Only Opcodes Cache
• But Also Opcodes Optimizer
• Shiped with PHP since 5.5
• http://pecl.php.net/zendopcache
13年11⽉月11⽇日 星期⼀一
![Page 3: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/3.jpg)
Opcodes Cache
• PHP->Compiler->Opcodes->Zend VM
• Same As APC, Eacc
• PHP->Opcodes Cache->Zend VM
13年11⽉月11⽇日 星期⼀一
![Page 4: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/4.jpg)
Opcodes Optimizer
13年11⽉月11⽇日 星期⼀一
![Page 5: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/5.jpg)
Optimizations
• Pass 1
• Substitute persistent constants
• const A = 1; $a = A; => $a = 1;
• Perform compile-time evaluation of constant binary and unary operations
• $a = 3 + 2 => $a = 5
• Optimize series of ADD_STRING and/or ADD_CHAR
• $a = “a” . “b”; => $a = “ab”;
• Convert IS_VAR to IS_CV when it is possible
13年11⽉月11⽇日 星期⼀一
![Page 6: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/6.jpg)
Optimizations
• Pass 2
• Convert non-numeric constants to numeric constants in numeric operators
• $a = $b + “2”; => $a = $b + 2;
• Optimize constant conditional JMPs
• JMPZ(X, L1), JMP(L2) => JMPZNZ(X, L1, L2)
• Optimize static BRKs and CONTs
• break to opcodes + offset => break to opcode
13年11⽉月11⽇日 星期⼀一
![Page 7: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/7.jpg)
Optimizations
• Pass 3
• Optimize $i = $i+expr to $i+=expr
• Optimize series of JMPs
• Change $i++ to ++$i where it is possible
13年11⽉月11⽇日 星期⼀一
![Page 8: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/8.jpg)
Optimizations
• Pass 4
• INIT_FCALL_BY_NAME -> DO_FCALL
13年11⽉月11⽇日 星期⼀一
![Page 9: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/9.jpg)
Optimizations
• Pass 5
• CFG optimization
• codes optimization
• remove dead blocks
13年11⽉月11⽇日 星期⼀一
![Page 10: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/10.jpg)
Optimizations
• Pass 9
• Optimize temp variables usage
13年11⽉月11⽇日 星期⼀一
![Page 11: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/11.jpg)
Optimizations
• Pass 10
• Remove NOPs
13年11⽉月11⽇日 星期⼀一
![Page 12: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/12.jpg)
Optimizations
• Pass 11
• Compact literals table
13年11⽉月11⽇日 星期⼀一
![Page 13: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/13.jpg)
VS APC
• 7% - 10% faster than APC
• And More:
•
13年11⽉月11⽇日 星期⼀一
![Page 14: Zend Optimizer Plus(O+)](https://reader034.vdocuments.pub/reader034/viewer/2022042700/554f3ec5b4c905cd048b52d9/html5/thumbnails/14.jpg)
Q&A
13年11⽉月11⽇日 星期⼀一