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

在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了。我们其实可以通过程序很科学的得出精确的答案。知道我们的程序到底怎样写效率会更好。

VLD全名是Vulcan
Logic Disassembler,可以用来检测PHP脚本的执行情况。

1)
安装VLD:

wget
http://pecl.php.net/get/vld
tar zxvf vld-0.9.1.tgz
cd
vld-0.9.1
phpize
./configure
make
install

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

extension=vld.so

别忘了重启Apache。

下面我们看看如何检测PHP脚本的执行情况,看看PHP是如何处理单双引号字符串的:

s.php(单引号):<?php
echo ‘hello, world.‘; ?>
d.php(双引号):<?php echo "hello, world.";
?>

开始检测:

php -dvld.active=1 s.php或者d.php

结果不管是s.php还是d.php,number
of ops都是3,内容也都一样:

number of ops: 3
compiled vars:
none
line     #
op                          
fetch          ext return
operands
-------------------------------------------------------------------------------
  
1     0
ECHO                                                    
‘hello%2C+world.‘
   2     1
RETURN                                                  
1
         2*
ZEND_HANDLE_EXCEPTION

通常人们总是说,单引号比双引号快。但正如上面的实验结果显示,如果仅仅是输出一个常量字符串,那么单引号和双引号的效率其实是一样的。大家可以试试连接两个变量时他们的效率是不是还是一样呢

2)


<?php
/*
*文件:PHP_OperationTime.php
*功能:检测PHP执行效率
*作者:感染源
*时间:2007-04-29
*/

class timer
{
var $StartTime = 0;
var $StopTime = 0;
var $TimeSpent = 0;

function start()
{
$this->StartTime = microtime();
}

function stop()
{
$this->StopTime = microtime();
}

function spent()
{
if($this->TimeSpent)
return $this->TimeSpent;
else
{
$StartMicro = substr($this->StartTime,0,10);
$StartSecond = substr($this->StartTime,11,10);
$StopMicro = substr($this->StopTime,0,10);
$StopSecond = substr($this->StopTime,11,10);

$start = doubleval($StartMicro)+$StartSecond;
$stop = doubleval($StopMicro)+$StartSecond;

$this->TimeSpent = $stop-$start;
return substr($this->TimeSpent,0,8).‘秒‘;
}
}
}//Class Timer

$ct = new timer;
$ct->start();
//include_once(‘keygen.php‘);
include_once(‘../GetRate/inputnum.php‘);
$ct->stop();
echo ‘<br>‘;
echo $ct->spent();
?>

用VLD检测你的php代码执行效率~~,码迷,mamicode.com

时间: 2024-08-22 20:20:33

用VLD检测你的php代码执行效率~~的相关文章

用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率

无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的  time  和  timeEnd  方法 . console.time('myFirstCode');  //开始(开始的名字要和结束的名字要一致哦) //你所要执行的 javascript程序 .... console.timeEnd('myFirstCode');    //结束 在浏览器控制台 console 这个按钮,查看代码执行时间 用 console.time(

ABAP怎样提高代码执行效率?

程序的设计思路当然会影响程序的执行速度.程序如何设计与程序员的个人习惯以及业务逻辑有很大的关系.下面我要谈的是如何提高程序中相关代码的执行效率.供参考. 1.杜绝使用 select ….endselect 语句.如果使用时 可以用 select …into cor.. table 替代 : 2.不要在 循环中 使用 select 语句,尽量使用 read table … BINARY SEARCH 替代: 3.select 中 尽量要求字段最少,避免 select * : 4.select 中如

一个例子看懂异步代码执行效率

异步代码采用线程池,提供代码执行的并行性,不阻塞当前线程,实例代码,模拟三个耗时操作,分别耗时为1000.1500.1800ms,提供同步与异步的实现方式,Main中以同步异步的方式执行,对比执行时间,同步执行方式为各个方法的执行时间总和,而异步执行方式为最长的那个时间.ps:实际执行情况可能有其他的一些微不足道开销,但大体能反应异步的执行效率. class OutHelper { public DateTime Method1() { Thread.Sleep(1000); return Da

.Net中Task使用来提高代码执行效率

技术不断更新迭代,更高效的执行效率越来越被重视,所以对Task的使用进行了简单使用做了整理与大家分享. .Net 中有了Task后使多线程编程更简单使用和操作,下面粘上代码进行简单说明: /// <summary> /// 主线程执行 /// </summary> private static void GetVaule() { Console.WriteLine("我不是task,我的信息是,线程{0} 运行在线程id为{1}的线程上.是否是线程池中线程?:{2}&qu

iOS检测代码执行效率

RT #import <mach/mach_time.h> double MachTimeToSecs(uint64_t time) { mach_timebase_info_data_t timebase; mach_timebase_info(&timebase); return (double)time * (double)timebase.numer / (double)timebase.denom /1e9; } - (void)doSomething { uint64_t

C#监控代码执行效率

System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 //需要监测的代码 stopwatch.Stop(); // 停止监视 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 string hours = timespan.TotalHours.ToString("#0.00000000 ");

代码执行的效率

代码执行的效率 在<性能调优攻略>里,我说过,要调优性需要找到程序中的Hotspot,也就是被调用最多的地方,这种地方,只要你能优化一点点,你的性能就会有质的提高.在这里我给大家举三个关于代码执行效率的例子(它们都来自于网上) 第一个例子 PHP中Getter和Setter的效率(来源reddit) 这个例子比较简单,你可以跳过. 考虑下面的PHP代码:我们可看到,使用Getter/Setter的方式,性能要比直接读写成员变量要差一倍以上. 1 2 3 4 5 6 7 8 9 10 11 12

Office CVE-2017-8570远程代码执行漏洞复现

实验环境 操作机:Kali Linux IP:172.16.11.2 目标机:windows7 x64 IP:172.16.12.2 实验目的 掌握漏洞的利用方法 实验工具 Metaspliot:它是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报.这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程,团队合作. 实验内容 Office CVE-2017-8570 CVE-2017-8570漏

关于发布的CVE-2013-2251漏洞,strust远程代码执行漏洞

(*该漏洞影响版本:Struts 2.0.0 – Struts 2.3.15) (*该博客仅仅只是记录我工作学习时遇到的问题,仅供参考!) (*如果,描述中可能存在错误,请多指教!) 在昨天在对我目前负责的那个项目进行日常维护的时候,系统被别人攻克,上传了一个.txt文件,他人可以直接访问这个项目下txt文件,就可以获取到txt文件内的内容. 首先,介绍下我目前维护的项目,使用的是strust2.1+hibernate3.0架构模式,也就是javaweb+SSH框架,不过为了简化,并没有添加sp