当前位置:首页 >> 电力/水利 >>

PHP高效率写法


PHP 高效率写法!

时尚 下面是一些提高 php 执行效率的方法,由于没找到原作者是谁,所以原文链接接不给出了。 这里有些是我深有体会的,有些我没有测试过,先放这里,大家看看,同时也当作一个笔记 放在这里供以后慢慢看 0、用单引号代替双引号来包含字符串,这样做会更快一些。因为 PHP 会在双引号包围的字符 串中搜寻变量,单引号则不会,注意:只有 echo

能这么做,它是一种可以把多个字符串当作 参数的“函数” (译注:PHP 手册中说 echo 是语言结构,不是真正的函数,故把函数加上了 双引号) 。 1、如果能将类的方法定义成 static,就尽量定义成 static,它的速度会提升将近 4 倍。 2、$row[’id’] 的速度是$row[id]的 7 倍。 3、echo 比 print 快,并且使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符 串连接,比如 echo $str1,$str2。 4、在执行 for 循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用 foreach 代替。 5、注销那些不用的变量尤其是大数组,以便释放内存。 6、尽量避免使用__get,__set,__autoload。 7、require_once()代价昂贵。 8、include 文件时尽量使用绝对路径,因为它避免了 PHP 去 include_path 里查找文件的速 度,解析操作系统路径所需的时间会更少。 9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使 用 $_SERVER[‘REQUEST_TIME’]要好于 time()。 10、函数代替正则表达式完成相同功能。 11、str_replace 函数比 preg_replace 函数快,但 strtr 函数的效率是 str_replace 函数的 四倍。 12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可 以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组 作为查询和替换的参数。 13、使用选择分支语句(译注:即 switch case)好于使用多个 if,else if 语句。 14、用@屏蔽错误消息的做法非常低效,极其低效。 15、打开 apache 的 mod_deflate 模块,可以提高网页的浏览速度。 16、数据库连接当使用完毕时应关掉,不要用长连接。 17、错误消息代价昂贵。 18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。 19、递增一个全局变量要比递增一个局部变量慢 2 倍。 20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢 3 倍。 21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢 9 至 10 倍。 22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局 部变量) 。PHP 大概会检查看是否存在全局变量。 23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加 了 10 个方法,但性能上没有变化。 24、派生类中的方法运行起来要快于在基类中定义的同样的方法。 25、调用带有一个参数的空函数,其花费的时间相当于执行 7 至 8 次的局部变量递增操作。

类似的方法调用所花费的时间接近于 15 次的局部变量递增操作。 26、Apache 解析一个 PHP 脚本的时间要比解析一个静态 HTML 页面慢 2 至 10 倍。尽量多用静 态 HTML 页面,少用脚本。 27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套 PHP 缓存机制通常可 以提升 25%至 100%的性能,以免除编译开销。 28、尽量做缓存,可使用 memcached。memcached 是一款高性能的内存对象缓存系统,可用来 加速动态 Web 应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不 必为每个请求做重新编译。 29、 当操作字符串并需要检验其长度是否满足某种要求时, 你想当然地会使用 strlen()函数。 此函数执行起来相当快,因为它不做任何计算,只返回在 zval 结构(C 的内置数据结构,用 于存储 PHP 变量)中存储的已知字符串长度。但是,由于 strlen()是函数,多多少少会有些 慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP 不区分函 数名大小写) 哈希查找, 、 会跟随被调用的函数一起执行。 在某些情况下, 你可以使用 isset() 技巧加速执行你的代码。 (举例如下) if (strlen($foo) < 5) { echo “Foo is too short”$$ } (与下面的技巧做比较) if (!isset($foo{5})) { echo “Foo is too short”$$ } 调用 isset()恰巧比 strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着 它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中 你没有花太多开销。 34、当执行变量$i 的递增或递减时,$i++会比++$i 慢一些。这种差异是 PHP 特有的,并不适 用于其他语言,所以请不要修改你的 C 或 Java 代码并指望它们能立即变快,没用的。++$i 更快是因为它只需要 3 条指令(opcodes), $i++则需要 4 条指令。 后置递增实际上会产生一个 临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一 种,正如 Zend 的 PHP 优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是 所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务 提供商(ISPs)和服务器。 35、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多 内存。 36、并非要用类实现所有的数据结构,数组也很有用。 37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码? 38、当你需要时,你总能把代码分解成方法。 39、尽量采用大量的 PHP 内置函数。 40、如果在代码中存在大量耗时的函数,你可以考虑用 C 扩展的方式实现它们。 41、 评估检验(profile)你的代码。 检验器会告诉你, 代码的哪些部分消耗了多少时间。 Xdebug 调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。 42、mod_zip 可作为 Apache 模块,用来即时压缩你的数据,并可让数据传输量降低 80%。 43、在可以用 file_get_contents 替代 file、fopen、feof、fgets 等系列方法的情况下,尽 量用 file_get_contents,因为他的效率高得多!但是要注意 file_get_contents 在打开一 个 URL 文件时候的 PHP 版本问题; 44、尽量的少进行文件操作,虽然 PHP 的文件操作效率也不低的; 45、优化 Select SQL 语句,在可能的情况下尽量少的进行 Insert、Update 操作(在 update 上,我被恶批过);

46、尽可能的使用 PHP 内部函数(但是我却为了找个 PHP 里面不存在的函数,浪费了本可以 写出一个自定义函数的时间,经验问题啊!; ) 47、 循环内部不要声明变量, 尤其是大变量: 对象(这好像不只是 PHP 里面要注意的问题吧?); 48、多维数组尽量不要循环嵌套赋值; 49、在可以用 PHP 内部字符串操作函数的情况下,不要用正则表达式; 50、foreach 效率更高,尽量用 foreach 代替 while 和 for 循环; 51、用单引号替代双引号引用字符串; 52、 “用 i+=1 代替 i=i+1。符合 c/c++的习惯,效率还高” ; 53、对 global 变量,应该用完就 unset()掉;


相关文章:
PHP高效率写法
PHP高效率写法_计算机软件及应用_IT/计算机_专业资料。PHP 高效率写法 1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高 1/4,甚至我测试的...
php高效率写法40例
PHP 经典 代码 心得 分享PHP 经典 代码 心得 分享隐藏>> php 高效率写法 40 例 0、用单引号代替双引号来包含字符串 ,这样做会更快一些。因为 PHP 会在双引...
php 高效率写法 推荐
如何书写安全的PHP代码 4页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 php 高效率写法 推荐 隐藏>> 0、用单...
php array数组几种写法
php array数组几种写法_计算机软件及应用_IT/计算机_专业资料。php array数组几种写法 php array 数组有三种数组类型: 数值数组带有数字 ID 键的数组关联数组数组...
简易webconfig的写法(PHP网站)
简易webconfig的写法(PHP网站)_互联网_IT/计算机_专业资料。今日推荐 180...PHP高效写法(详解原因)-... 7页 1下载券 php(类)面向对象的写法 7页 免费...
编写高效的PHP代码
http://engineer.baixing.com/179#more-179 编写高效 PHP 代码的小技巧 Posted on August 27, 2012 by Rojey 本文整理自 PHP100 http://www.php100.com/...
php(类)面向对象的写法
学习php(类)面向对象的写法、介绍、基础入门 1.对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类...
优化PHP代码,使php更高效
优化PHP代码,使php高效_计算机软件及应用_IT/计算机_专业资料。优化 PHP 代码,使 php高效 07 March 2010 22:58 Sunday by 小屋 1.如果一个方法可静态化...
SupeSite模板说明
3. {template bbs_header}此种写法为调用模版文件,其中 bbs_header 为模版文 件名,对应的模版文件为 bbs_header.html.php。 4.<!--{block name="bbsthread...
robots文件的写法
robots文件的写法_电脑基础知识_IT/计算机_专业资料。robots文件的写法,举例说明,...car.php Disallow: /plus/disdls.php Disallow: /plus/feedback_js.php ...
更多相关标签:
php无限分类高效率 | php写法 | php 数组写法 | php伪静态规则写法 | php路由的写法 | php单一入口写法 | php 相对路径写法 | php模板写法 |