Zend Optimizer Plus(O+)
-
Upload
xinchen-hui -
Category
Technology
-
view
3.845 -
download
3
Transcript of Zend Optimizer Plus(O+)
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/zendopcache
13年11⽉月11⽇日 星期⼀一
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
• 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⽇日 星期⼀一
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⽇日 星期⼀一
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⽇日 星期⼀一
Optimizations
• Pass 4
• INIT_FCALL_BY_NAME -> DO_FCALL
13年11⽉月11⽇日 星期⼀一
Optimizations
• Pass 5
• CFG optimization
• codes optimization
• remove dead blocks
13年11⽉月11⽇日 星期⼀一
Optimizations
• Pass 9
• Optimize temp variables usage
13年11⽉月11⽇日 星期⼀一
Optimizations
• Pass 10
• Remove NOPs
13年11⽉月11⽇日 星期⼀一
Optimizations
• Pass 11
• Compact literals table
13年11⽉月11⽇日 星期⼀一
VS APC
• 7% - 10% faster than APC
• And More:
•
13年11⽉月11⽇日 星期⼀一
Q&A
13年11⽉月11⽇日 星期⼀一