|
|
1
0
是时候分析由PHP解释器生成的PHP操作码了。为此,您需要安装 VLD extension 在命令行中使用它来生成手头的PHP脚本的操作码。 Opcode分析
POST_INC ~4 !1 FREE ~4 将计数器增加1,并将以前的值保存到内存插槽4中。然后,因为从未使用过这个值-将其从内存中释放。问题-如果不使用价值,为什么我们需要存储价值?
优化测试代码将post_inc更改为assign_add(它不会在内存中保存附加信息)并执行循环展开,将使用以下测试代码:
结果脚本将CPU命中一个或其他加速值的次数聚合起来。 当CPU命中vs加速被绘制成一个图表时,我们得到这样的图片:
所以很可能脚本会加速10%。这意味着我们的优化结果 + 2% 加速(与原始脚本8%相比)。 期望我非常确定我所做的所有这些事情——都可以通过一个php jit'er自动完成。我认为在生成二进制可执行文件时,很难将一对post_inc/free操作码自动更改为一个pre_inc操作码。此外,php jit'er可以应用循环展开也不是一个奇迹。这只是一个优化的开始! 希望会有一个吉特在 PHP 8.0 |
|
|
Lukas Eder · 如何使用调试日志信息动态生成堆栈帧 9 年前 |
|
|
Valentin Lorentz · Python 3字节码格式 10 年前 |
|
|
Lev Kuznetsov · 使用Byte Buddy截取默认构造函数 10 年前 |
|
|
batman · Java中何时执行二进制运算符? 10 年前 |