PHP技巧汇总:提高PHP性能的53个技巧

  • 来源: 未知 作者: 老苏   2011-07-18/10:15
  • 49、正在可以用PHP内部字符串操作函数的环境下,不要用正则表达式;

    挪用isset()刚巧比strlen()快,由于与后者差别的是,isset()作为一种说话构造,意味着它的履行不需要函数查找和字母小写化。也就是说,现真上正在查验字符串长度的顶层代码中你出有花太多开消。

    48、多维数组尽可能不要轮回嵌套赋值;

    41、评估查验(profile)你的代码。查验器会报告你,代码的哪些部门消费了几多工夫。Xdebug调试器包罗了查验法式,评估查验整体上可以隐现出代码的瓶颈。

    47、轮回内部不要声明变量,特别是年夜变量:对象(那如同不但是PHP里里要注重的题目吧?);

    43、正在可以用file_get_contents替换file、fopen、feof、fgets等系列圆式的环境下,尽可能用file_get_contents,由于他的效力高很多!然则要注重file_get_contents正在挨开一个URL文件时间的PHP版本题目;

    25、挪用带有一个参数的空函数,其破费的工夫相当于履行7至8次的部分变量递增操作。相似的圆式挪用所破费的工夫靠近于15次的部分变量递增操作。

    (举例以下)

    44、尽可能的少停止文件操作,固然PHP的文件操作效力也不低的;

    29、当操作字符串并需要查验其长度是不是谦意某种要求时,你想固然地会利用strlen()函数。此函数履行起来相当快,由于它不做任何计较,只返回正在zval构造(C的内置数据构造,用于存储PHP变量)中存储的已知字符串长度。然则,果为strlen()是函数,多多极少会有些缓,由于函数挪用会颠末诸多步调,如字母小写化(译注:指函数名小写化,PHP不辨别函数名年夜小写)、哈希查找,会追随被挪用的函数一同履行。正在某些环境下,你可以利用isset()技巧加快履行你的代码。

    7、require_once()价格高贵。

    46、尽量的利用PHP内部函数(然则我却为了找个PHP里里不存正在的函数,华侈了本可以写出一个自界说函数的工夫,经历题目啊!);

    40、若是正在代码中存正在年夜量耗时的函数,你可以思索用C扩大的体例真现它们。

    6、尽可能制止利用__get,__set,__autoload。

    51、用单引号替换双引号援用字符串;

    34、当履行变量$i的递增或递减时,$i++会比++$i缓一些。那类差别是PHP独有的,其真不开用于其他说话,所以请不要点窜你的C或Java代码并期看它们能立刻变快,出用的。++$i更快是由于它只需要3条指令(opcodes),$i++则需要4条指令。后置递增现真上会收生一个姑且变量,那个姑且变量随后被递增。而前置递增直接正在本值上递增。那是最优化处置的一种,正如Zend的PHP优化器所作的那样。服膺那个优化处置不得为一个好主张,由于其真不是所有的指令优化器都市做一样的优化处置,而且存正在年夜量出有拆配指令优化器的互联网办事供给商(ISPs)和办事器。

    if(!isset($foo{5})){echo“Fooistooshort”$$}

    10、函数取代正则表达式完成沟通功效。

    14、用@屏障毛病动静的做法十分低效,极为低效。

    20、递增一个对象属性(如:$this->prop++)要比递增一个部分变量缓3倍。

    用单引号取代双引号来包罗字符串,如许做会更快一些。由于PHP会正在双引号包抄的字符PHP技巧汇总:提高PHP性能的53个技巧串中搜索变量,单引号则不会,注重:只要echo能那么做,它是一种可以把多个字符串看成参数的“函数”(译注:PHP脚册中说echo是说话构造,不是真真的函数,故把函数加上了双引号)。

    24、派生类中的圆式运转起来要快于正在基类中界说的一样的圆式。

    1、若是能将类的圆式界说成static,就尽可能界说成static,它的速度会晋升快要4倍。

    WebjxCom提醒:用单引号取代双引号来包罗字符串,如许做会更快一些。由于PHP会正在双引号包抄的字符串中搜索变量,单引号则不会,注重:只要echo能那么做,它是一种可以把多个字符串看成参数的“函数”.

    15、挨开apache的mod_deflate模块,可以进步网页的阅读速度。

    28、尽可能做缓存,可利用memcached。memcached是一款高机能的内存对象缓存系统,可用来加快动态Web利用法式,减轻数据库负载。对运算码(OPcode)的缓存很有效,使得剧本出必要为每一个哀求做从头编译。

    36、并不是要用类真现所有的数据构造,数组也很有效。

    27、除非剧本可以缓存,不然每次挪用时都市从头编译一次。引进一套PHP缓存机造凡是是可以晋升25%至100%的机能,以避免除编译开消。

    18、正在圆式中递增部分变量,速度是最快的。险些与正在函数中挪用部分变量的速度相当。

    21、递增一个未预界说的部分变量要比递增一个预界说的部分变量缓9至10倍。

    if(strlen($foo)<5){echo“Fooistooshort”$$}

    19、递增一个全局变量要比递增一个部分变量缓2倍。

    39、尽可能采取年夜量的PHP内置函数。

    12、若是一个字符串替代函数,可启受数组或字符作为参数,而且参数长度不太长,那末可以思索额中写一段替代代码,使得每次传递参数是一个字符,而不是只写一行代码启受数组作为查询和替代的参数。

    22、仅界说一个部分变量而出正在函数中挪用它,一样会减缓速度(其水仄相当于递增一个部分变量)。PHP年夜概会查抄看是不是存正在全局变量。

    3、echo比print快,而且利用echo的多重参数(译注:指用逗号而不是句点)取代字符串联接,好比echo$str1,$str2。

    9、若是你想知道剧本开端履行(译注:即办事器端支到客户端哀求)的时候,利用$_SERVER[‘REQUEST_TIME’]要好过time()。

    2、$row[’id’]的速度是$row[id]的7倍。

    5、刊出那些不消的变量特别是年夜数组,以便开释内存。

    (与下里的技巧做比力)

    26、Apache剖析一个PHP剧本的工夫要比剖析一个静态HTML页里缓2至10倍。尽可能多用静态HTML页里,罕用剧本。

    53、对global变量,应当用完就unset()得降;

    35、其真不是事必里向对象(OOP),里向对象常常开消很年夜,每一个圆式和对象挪用都市消费良多内存。

    13、利用选择分支语句(译注:即switchcase)好过利用多个if,elseif语句。

    52、“用i+=1取代i=i+1。契开c/c++的习惯,效力还高”;

    11、str_replace函数比preg_replace函数快,但strtr函数的效力是str_replace函数的四倍。

    42、mod_zip可作为Apache模块,用来即时紧缩你的数据,并可以让数据传输量下降80%。

    23、圆式挪用看来与类中界说的圆式的数目无闭,由于我(正在测试圆式之前和以后都)添加了10个圆式,但机能上出有变革。

    37、不要把圆式细分得过量,认真想一想你真正筹算重用的是哪些代码?

    50、foreach效力更高,尽可能用foreach取代while和for轮回;

    17、毛病动静价格高贵。

    45、优化SelectSQL语句,正在大概的环境下尽可能少的停止Insert、Update操作(正在update上,我被恶批过);

    8、include文件时尽可能利用尽对路径,由于它制止了PHP往include_path里查找文件的速度,剖析操作系统路径所需的工夫会更少。

    4、正在履行for轮回之前肯定最年夜轮回数,不要每轮回一次都计较最年夜值,最好应用foreach取代。

    16、数据库毗连当利用终了时应闭得降,不要用长毗连。

    38、当你需要时,你总能把代码开成成圆式。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多