到的结果大吃一惊,原来问题出在一个与获得特定语言名字(例如
en 代表 english)的转换
代码的函数调用
中,该函数在每个页面上都会被使用数百次。每次调用该函数时,脚本代
码都会对一个
进行查询,从一个数据库表中获得真正的语言名字。
于
是我们这一类的信息创建了一个缓冲系统。经过短短 2 天时间的工作,我们使系统的性
能得到了很大的提高,第一周内页面的浏览量也因此而增加了
40%。当然 了,这只是一个
有关分析代码能够提高互联网应用或互联网网站性能的例子。
性能测试函数调用
在
分析一个脚本或网页(以及其包含文件)时,尽管 Benchmark_Timer()特别有用,但它
并不科学,因为要获得分析的数据我们必须多次加载脚本,
而且它也不是针对某个类或函
数调用的。
PEAR::Benchmark 库中的另一个被称作 Benchmark_Iterator 的类能 够很好地解决这一个问
题,它能够针对特定的函数或类的方法,显示其分析信息。它的用途是能够能够从测试中获
得一致的结果,因为我们知道,如果运行一段脚本
一次,其运行时间为 10 秒,并不意味
着它每次的运行时间总是
10 秒。
In any case, let's see some examples:
// 连接数据库的代码
include_once("DB.php");
$dsn = array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'database_name',
'username' => 'user_name',
'pass
' => 'password'
);
$dbh = DB::connect($dsn);
function getCreatedDate($id)
{
global $dbh;
> $stmt = "SELECT created_date FROM users WHERE id=$id";
// 在这里使用 PEAR::DB
$created_date = $dbh-> getOne($stmt);
if ((PEAR::isError($created_date)) ||
(empty($created_date))) {
return false;
} else {
return $created_date;
}
}
include_once 'Benchmark/Iterate.php';
$bench = new Benchmark_Iterate;
// 运行 getDate 函数 10 次
$bench-> run(10, 'getCreatedDate', 1);
// 打印分析信息
print_r($bench-> get());