当然了,这个测试方法需要在十万级以上次执行,效果才明显.
其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存.
任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同.静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快.
静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而是实例化可以销毁.
①.:单引号代替双引号,双引号会去找变量.
①.0:脚本开始执行时间$_SERVER['REQUEST_TIME']要好于time().
①.1:正则效率低,用函数代替.
①.、用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号).
①.,在函数中,传递数组时
使用
return
比使用
global
要高效
比如
function
userloginfo($usertemp){
$detail=explode("|",$usertemp);
$detail;
}
$login=userloginfo($userdb);
比
userloginfo($userdb);
$urlarray=explode('/',$HTTP_SERVER_VARS['REQUEST_URI']);
$urlcount=count($urlarray);unset($urlarray[$urlcount-1]);
$ofstarurl='http://'.$HTTP_SERVER_VARS['HTTP_HOST'].implode('/',$urlarray);
这段代码比
$pre_urlarray=explode('/',$HTTP_SERVER_VARS['HTTP_REFERER']);
$pre_url=array_pop($pre_urlarray);
if($a==$b)$c=$a;
if($a===$b)$c=$a;
高效
查询时尽量使用where
in
少用
limit
limit查多记录的前几条,
速度很快,
但是查询最面几条就会慢
使用in
.在查询连续性记录,非常快,
非连续性记录第一次运行会稍微慢一点,但是之后将比较快!
ob_start();
可以加快输出速度,适用NT或nuli/linux,对unlix类服务器
如果使用
ob_start('ob_gzhandler');输出效率将更高
否定的时候尽量使用if(empty($a)),因为这样程序运行更快速
!=
与
效率相当
$a="11111111111111";
的效率和
$a='11111111111111';
相当.并不象书本说的相差很大
①.0,使用规范的SQL语句,
会有利于MySQL的解析
①.1,使用
if($online){
$online1=$online;
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
COOKIE将马上生效
if($online)
COOKIE需要再刷新一次才能生效
$handle=fopen($filename,wb);
flock($handle,LOCK_SH);
$filedata=fread($handle,filesize($filename));
fclose($handle);
file($filename);
无论在速度还是稳定上都要优秀
substrs($content,$length)
{
if(strlen($content)$length){
$num=0;
$content.='
...';
$content;
for
//strtolower()
此函数在一些服务器会产生乱码!
if
(strrpos($regname,chr($asc))!==false)
$error="为了避免用户名混乱,用户名中禁止使用大写字母,请使用小写字母";
$reg_check=0;
file();和不使用
fget();(不稳定或速度慢)
取一数组函数
openfile($filename,$method="rb")
$handle=@fopen($filename,$method);
@flock($handle,LOCK_SH);
@$filedata=fread($handle,filesize($filename));
@fclose($handle);
$filedata=str_replace("\n","\nofstar:",$filedata);
$filedb=explode("ofstar:",$filedata);
//array_pop($filedb);
$count=count($filedb);
if($filedb[$count-1]==''){unset($filedb[$count-1]);}
$filedb;
//这个函数虽然代码比较多,不过在速度和稳定性上优势很大!
先写到这
以上完全个人的一点小结,,不过正确性都经过反复测试,如果有朋友质疑,请先测试,再讨论,谢谢!
php(做为现在的主流开发语言)是一种执行起来非常迅速的编程语言,但是比起仅仅优化代码来说仍然值得优化php(做为现在的主流开发语言)本身.
本文我们将根据一些实效阐述为什么优化php(做为现在的主流开发语言)本身要比优化代码来的更贴切,以及为什么需要理解根据php(做为现在的主流开发语言)在你的服务器上其他相关子系统的表现找出瓶颈并修复之.与此同时,我们也提到了如何优化您的php(做为现在的主流开发语言)代码来让他们拥有更快的执行速度.
获得高性能
当我们谈及好的性能,往往不仅仅是指您的php(做为现在的主流开发语言)代码执行起来有多快.性能是一套在可量化评测和速度之间取出的平衡.仅仅依靠使用更少资源的代码执行起来也许比在高速缓存中之行的代码更慢,并且相同的一组(在高速缓冲中执行的)代码可以在同时并发执行在一台Web服务器上.
在下面的例子中,A.php(做为现在的主流开发语言)算作一位尽可能跑得快的赛跑选手,而B.php(做为现在的主流开发语言)是一个几乎可以以同一慢速永远跑下去的马拉松选手.轻负荷情况下,A.php(做为现在的主流开发语言)可以充分的快,但是当流量增加后,B.php(做为现在的主流开发语言)的性能表现将仅仅降低一点点而A.php(做为现在的主流开发语言)会垮掉.
以下表格中,执行得更快的php(做为现在的主流开发语言)脚本使用粗体区分开来:
------------------------------------------------------------------------------------------
| 连接数 | 每执行1次HTTP请求所需CPU执行时间(秒)| 每执行10次HTTP请求所需CPU执行时间(秒)| 每执行11次HTTP请求所需CPU执行时间(秒)|
如您在上例中看到的,获得更好的性能不再仅仅是写出执行起来更快的php(做为现在的主流开发语言)程序.高性能php(做为现在的主流开发语言)表现需要对底层硬件知识以及操作系统、软件支持如Web服务器、数据库等有一个良好认识和理解.
瓶颈
以上两个例子让我们看到了(性能)下降的瓶颈所在.当拥有无限大容量的内存时,hare.php(做为现在的主流开发语言)的确是始终比tortoise.php(做为现在的主流开发语言)快.但是,仅仅认为内存是php(做为现在的主流开发语言)整体性能的瓶颈所在显得过于单纯——实际上远不止这些:
(a) 网络
(b) CPU
如果你监视一下你的CPU负荷情况,发送一个纯静态HTML页面并不会增加CPU负担——就像我们以上提到的,此时瓶颈在于网络.当然啦,对于由php(做为现在的主流开发语言)生成的复杂动态页面,你的CPU速度自然将成为限制因素之一.拥有包含多个CPU的服务器或者一个服务器阵列将减轻因CPU带来的影响.