安装与使用vld查看php的opcode代码

需要分析PHP代码的性能,或者说实现同样功能的代码到底哪个更好呢?或者说想知道底层的实现可以使用VLD查看opcode

下载与安装VLD

# wget http://pecl.php.net/get/vld-0.11.2.tgz

# tar zxvf vld-0.11.2.tgz

# cd ./vld-0.11.2

# /usr/local/php/bin/phpize              或者直接phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-vld

# make && make install

---------------------------------

编辑php.ini文件激活vld扩展:

php.ini位置

#cd /usr/local/php/lib

增加

extension=vld.so

重启Apache:

# /usr/local/apache2/bin/apachectl restart

---------------------------------

查看phpinfo()信息

--------------------------------

至此,VLD就安装完了。写个简单的test.php

<?php

$a=‘123‘;

echo $a;

?>

# php -dvld.active=1 ./test.php

如果没有设置php环境变量的话

查看结果

# php -dvld.active=1 ./test.php

如果没有设置php环境变量的话

查看结果

如上为VLD输出的PHP代码生成的中间代码的信息,说明如下:

Branch analysis from position 这条信息多在分析数组时使用。

Return found 是否返回,这个基本上有都有。

filename 分析的文件名

function name 函数名,针对每个函数VLD都会生成一段如上的独立的信息,这里显示当前函数的名称

number of ops 生成的操作数

compiled vars 编译期间的变量,这些变量是在PHP5后添加的,它是一个缓存优化。这样的变量在PHP源码中以IS_CV标记。

op list 生成的中间代码的变量列表

使用-dvld.active参数输出的是VLD默认设置,如果想看更加详细的内容。可以使用-dvld.verbosity参数。

#php -dvld.active=1 -dvld.verbosity=3 text.php

-dvld.verbosity=3是VLD在当前版本可以显示的最详细的信息.

如果我们只是想要看输出的中间代码,并不想执行这段PHP代码,可以使用-dvld.execute=0来禁用代码的执行

#php -dvld.active=1 -dvld.execute=0 text.php

VLD扩展的参数列表:

-dvld.active 是否在执行PHP时激活VLD挂钩,默认为0,表示禁用。可以使用-dvld.active=1启用。

-dvld.skip_prepend 是否跳过php.ini配置文件中auto_prepend_file指定的文件, 默认为0,即不跳过包含的文件,显示这些包含的文件中的代码所生成的中间代码。此参数生效有一个前提条件:-dvld.execute=0

-dvld.skip_append 是否跳过php.ini配置文件中auto_append_file指定的文件, 默认为0,即不跳过包含的文件,显示这些包含的文件中的代码所生成的中间代码。此参数生效有一个前提条件:-dvld.execute=0

-dvld.execute 是否执行这段PHP脚本,默认值为1,表示执行。可以使用-dvld.execute=0,表示只显示中间代码,不执行生成的中间代码。

-dvld.format 是否以自定义的格式显示,默认为0,表示否。可以使用-dvld.format=1,表示以自己定义的格式显示。这里自定义的格式输出是以-dvld.col_sep指定的参数间隔

-dvld.col_sep 在-dvld.format参数启用时此函数才会有效,默认为 “\t”。

-dvld.verbosity 是否显示更详细的信息,默认为1,其值可以为0,1,2,3 其实比0小的也可以,只是效果和0一样,比如0.1之类,但是负数除外,负数和效果和3的效果一样 比3大的值也是可以的,只是效果和3一样。

-dvld.save_dir 指定文件输出的路径,默认路径为/tmp。

-dvld.save_paths 控制是否输出文件,默认为0,表示不输出文件

-dvld.dump_paths 控制输出的内容,现在只有0和1两种情况,默认为1,输出内容

使用VLD比较代码差异

代码text1.php

[php] view plain copy

$var = 111;

$str = "AAA " . $var . " BBB";

代码text2.php

[php] view plain copy

$var = 111;

$str = "AAA $var BBB";

时间: 2024-10-16 22:40:24

安装与使用vld查看php的opcode代码的相关文章

Eclipse之安装Jadclipse插件直接查看class文件

Eclipse之安装Jadclipse插件直接查看class文件 我们在Eclipse中开发项目的时候会引入很多jar包,有时候想看一下jar包中类的代码,发现需要引入jar包的source源码包才能查看,那么下面教大家个方法可以直接查看没有源码包的class内容方法. 1.下载Jadclipse插件Jadclipse插件为Eclipse插件,可以在地址下载:Jadclipse2.下载Jad反编译工具Jad反编译工具可以在地址下载:Jad3.将Jadclipse放入Eclipse插件目录下我下载

用VLD检测你的php代码执行效率~~

在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好. VLD全名是Vulcan Logic Disassembler,可以用来检测PHP脚本的执行情况. 1)安装VLD:wget http://pecl.php.net/get/vldtar zxvf vld-0.9.1.tgzcd vld-0.9.1phpize./configuremake in

沉淀再出发:如何在eclipse中查看java的核心代码

沉淀再出发:如何在eclipse中查看java的核心代码 一.前言   很多时候我们在eclipse中按F3键打算查看某一个系统类的定义的时候,总是弹出找不到类这样的界面,这里我们把核心对应的代码加进去就可以了. 二.解决办法  2.1.打开配置    首先我们打开windows->preferences->java->install jres,在弹出的界面中选中并编辑:      然后选中rt.jar包,增加依赖: 2.2.添加代码文件 那么这个依赖在哪里呢,其实我们仔细查找就会发现,

C# 如何查看源程序的IL代码

1.打开microsoft  visual  studio  2008  /  visual  studio  tools /  visual  studio  2008 命令提示  ,并输入ildasm .如下图所示: 2.按enter键,打开IL DASM 窗口,如下图所示: 3.单击 文件 / 打开,打开编译好的.exe文件,即可查看该代码的IL代码 例如:通过visual  studio  2008 命令提示 查看如下源程序的IL代码. using System;using System

使用Xcode 查看objective-C的汇编代码

Xcode自带将某一个源文件转化成汇编的功能,如图: 汇编的部分代码如下: # Assembly output for assemble.c # Generated at 2:29:34 下午 on 星期一, 八月 18, 2014 # Using Debug configuration, x86_64 architecture for dataStruct target of dataStruct project .section __TEXT,__text,regular,pure_inst

VS2015提示:未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用。服务器控件的标记Intellisense可能不起作用

一.问题 最近在VS2015打开文件,提示未安装Style的Visual Studio语言支持,代码编辑Intellisense将不可用.服务器控件的标记Intellisense可能不起作用. Intellisense是智能感知,判断代码语法错误,不需要运行编译器再修正. 二.解决方法 vs2015中 工具--扩展和更新 搜索Microsoft ASP.NET and Web Tools 点击下载 安装.注意:安装时把VS2015关闭,不然安装会中止

PHP性能之语言性能优化:vld——查看代码opcode的神器

vld介绍 vld是PECL(PHP 扩展和应用仓库)的一个PHP扩展,现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的vld简介).简单来说,可以查看PHP程序的opcode. vld扩展的安装 1.下载官方插件安装压缩包 官方网址:http://pecl.php.net/package/vld 下载命令:# wget http://pecl.php.net/get/vld-0.14.0.tgz 注:下载的URL是在

PHP扩展--vld查看opcode代码

vld安装 wget http://pecl.php.net/get/vld-0.13.0.tgz tar zxvf vld-0.13.0.tgz cd vld-0.13.0 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --enable-vld make && make install 配置php.ini extension=vld.so 运行结果 来自为知笔记(

linux下apache服务器的安装、启动、查看

一.apache的启动 apahce启动命令:/你的安装目录/apachectl start apaceh启动 apache停止命令/你的安装目录/apachectl stop   停止 apache重新启动命令:/你的安装目录/apachectl restart 重启 三.查看 netstat -nltup |grep httpd 查看本机上是否启动成功apache