Zend Optimizer Plus(Opcache)
- laruence

13年11⽉月11⽇日 星期⼀一
What it is
• Not Only Opcodes Cache
• But Also Opcodes Optimizer
• Shiped with PHP since 5.5
• http://pecl.php.net/zendopc...
Opcodes Cache
• PHP->Compiler->Opcodes->Zend VM
• Same As APC, Eacc
• PHP->Opcodes Cache->Zend VM

13年11⽉月11⽇日 星期⼀一
Opcodes Optimizer

13年11⽉月11⽇日 星期⼀一
Optimizations
• Pass 1
•

Substitute persistent constants

•

•

Perform compile-time evaluation of constant binary and un...
Optimizations
• Pass 2
•

Convert non-numeric constants to numeric constants in numeric
operators

•

•

Optimize constant...
Optimizations
• Pass 3
•
•
•

13年11⽉月11⽇日 星期⼀一

Optimize $i = $i+expr to $i+=expr
Optimize series of JMPs
Change $i++ to +...
Optimizations

• Pass 4
•

13年11⽉月11⽇日 星期⼀一

INIT_FCALL_BY_NAME -> DO_FCALL
Optimizations
• Pass 5
•

CFG optimization

•
•

13年11⽉月11⽇日 星期⼀一

codes optimization
remove dead blocks
Optimizations

• Pass 9
•

13年11⽉月11⽇日 星期⼀一

Optimize temp variables usage
Optimizations

• Pass 10
•

13年11⽉月11⽇日 星期⼀一

Remove NOPs
Optimizations

• Pass 11
•

13年11⽉月11⽇日 星期⼀一

Compact literals table
VS APC
• 7% - 10% faster than APC
• And More:
•
13年11⽉月11⽇日 星期⼀一
Q&A

13年11⽉月11⽇日 星期⼀一
Upcoming SlideShare
Loading in...5
×

Zend Optimizer Plus(O+)

4,288

Published on

Published in: Technology, Art & Photos
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,288
On Slideshare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
56
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Zend Optimizer Plus(O+)

  1. 1. Zend Optimizer Plus(Opcache) - laruence 13年11⽉月11⽇日 星期⼀一
  2. 2. 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⽇日 星期⼀一
  3. 3. Opcodes Cache • PHP->Compiler->Opcodes->Zend VM • Same As APC, Eacc • PHP->Opcodes Cache->Zend VM 13年11⽉月11⽇日 星期⼀一
  4. 4. Opcodes Optimizer 13年11⽉月11⽇日 星期⼀一
  5. 5. Optimizations • Pass 1 • Substitute persistent constants • • Perform compile-time evaluation of constant binary and unary operations • • 13年11⽉月11⽇日 星期⼀一 $a = 3 + 2 => $a = 5 Optimize series of ADD_STRING and/or ADD_CHAR • • const A = 1; $a = A; => $a = 1; $a = “a” . “b”; => $a = “ab”; Convert IS_VAR to IS_CV when it is possible
  6. 6. Optimizations • Pass 2 • Convert non-numeric constants to numeric constants in numeric operators • • Optimize constant conditional JMPs • • JMPZ(X, L1), JMP(L2) => JMPZNZ(X, L1, L2) Optimize static BRKs and CONTs • 13年11⽉月11⽇日 星期⼀一 $a = $b + “2”; => $a = $b + 2; break to opcodes + offset => break to opcode
  7. 7. Optimizations • Pass 3 • • • 13年11⽉月11⽇日 星期⼀一 Optimize $i = $i+expr to $i+=expr Optimize series of JMPs Change $i++ to ++$i where it is possible
  8. 8. Optimizations • Pass 4 • 13年11⽉月11⽇日 星期⼀一 INIT_FCALL_BY_NAME -> DO_FCALL
  9. 9. Optimizations • Pass 5 • CFG optimization • • 13年11⽉月11⽇日 星期⼀一 codes optimization remove dead blocks
  10. 10. Optimizations • Pass 9 • 13年11⽉月11⽇日 星期⼀一 Optimize temp variables usage
  11. 11. Optimizations • Pass 10 • 13年11⽉月11⽇日 星期⼀一 Remove NOPs
  12. 12. Optimizations • Pass 11 • 13年11⽉月11⽇日 星期⼀一 Compact literals table
  13. 13. VS APC • 7% - 10% faster than APC • And More: • 13年11⽉月11⽇日 星期⼀一
  14. 14. Q&A 13年11⽉月11⽇日 星期⼀一
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×