14
Zend Optimizer Plus(Opcache) - laruence 131111 星期

Zend Optimizer Plus(O+)

Embed Size (px)

Citation preview

Page 1: Zend Optimizer Plus(O+)

Zend Optimizer Plus(Opcache) - laruence

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

Page 2: Zend Optimizer Plus(O+)

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+)

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+)

Opcodes Optimizer

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

Page 5: Zend Optimizer Plus(O+)

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+)

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+)

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+)

Optimizations

• Pass 4

• INIT_FCALL_BY_NAME -> DO_FCALL

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

Page 9: Zend Optimizer Plus(O+)

Optimizations

• Pass 5

• CFG optimization

• codes optimization

• remove dead blocks

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

Page 10: Zend Optimizer Plus(O+)

Optimizations

• Pass 9

• Optimize temp variables usage

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

Page 11: Zend Optimizer Plus(O+)

Optimizations

• Pass 10

• Remove NOPs

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

Page 12: Zend Optimizer Plus(O+)

Optimizations

• Pass 11

• Compact literals table

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

Page 13: Zend Optimizer Plus(O+)

VS APC

• 7% - 10% faster than APC

• And More:

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

Page 14: Zend Optimizer Plus(O+)

Q&A

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