PHP高效率写法(详解原因)_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP高效率写法(详解原因)_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5872字,纯文字阅读大概需要9分钟。
内容图文
<span 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。<br <span 2.echo的效率高于print,因为echo没有返回值,print返回一个整型;
<span 测试:<br <span 注意,echo大字符串的时候,如果没有做调整就严重影响性能。使用打开apached的mod_<span deflate<span 进行压缩或者打开ob_start先将内容放进缓冲区。<br <span 3.在循环之前设置循环的最大次数,而非在在循环中;
<span 傻子都明白的道理。<br <span 4.销毁变量去释放内存,特别是大的数组;
<span 数组和对象在php特别占内存的,这个由于php的底层的zend引擎引起的,<br <span 5.避免使用像__get, __set, __autoload等魔术方法;
<span 对于__开头的函数就命名为魔术函数,此类函数都在特定的条件下初访的。总得来说,有下面几个魔术函数<br <span 其实,如果__autoload不能高效的将类名与实际的磁盘文件(注意,这里指实际的磁盘文件,而不仅仅是文件名)对应起来,系统将不得不做大量的文件是 否存在(需要在每个include path中包含的路径中去寻找)的判断,而判断文件是否存在需要做磁盘I/O操作,众所周知磁盘I/O操作的效率很低,因此这才是使得autoload机制效率降低的原因。
<span 因此,我们在系统设计时,需要定义一套清晰的将类名与实际磁盘文件映射的机制。这个规则越简单越明确,autoload机制的效率就越高。<br <span <strong <span 所以说尽量避免使用__autoload魔术方法,有待商榷。
<span 这是因为requiere_once需要判断该文件是否被引用过),所以能不用尽量不用。常用require/include方法避免。<br <span 7.在includes和requires中使用绝对路径。
<span 如果包含相对路径,PHP会在include_path里面遍历查找文件。<br <span 8.如果你需要得到脚本执行时的时间,$_SERVER['REQUSET_TIME']优于time();
<span 可以想象。一个是现成就可以直接用,一个还需要函数得出的结果。<br <span 9.能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式; 因为其效率高于正则;
<span 没得说,正则最耗性能。<br <span 10.str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4;
<span 另外不要做无谓的替换即使没有替换,str_replace 也会为其参数分配内存。很慢!解决办法:<br <span 11.参数为字符串 <p <span 如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换函数,并且参数列表不是太长,可以考虑额外写一段替换代码,使得每次传递参数都是一 个字符,而不是接受数组做为查找和替换参数。大事化小,1+1>2;
<span 用@实际上后台有很多操作。用@比起不用@,效率差距:3 倍。特别不要在循环中使用@,在 5 次循环的测试中,即使是先用 error_reporting(0) 关掉错误,在循环完成后再打开,都比用@快。<br <span 13.$row['id']比$row[id]速度快7倍
<p <span 建议养成数组键加引号的习惯;
<span 由于局部变量是存在栈中的,当一个函数占用的栈空间不是很大的时候,这部分内存很有可能全部命中cache,这时候CPU访问的效率是很高的。<br <span 18.建立一个对象属性(类里面的变量)例如($this->prop++)比局部变量要慢3倍;
<h3 <span 19.建立一个未声明的局部变量要比一个已经定义过的局部变量慢9-10倍
<h3 <span 20.声明一个未被任何一个函数使用过的全局变量也会使性能降低<span (和声明相同数量的局部变量一样)。
<p <span PHP可能去检查这个全局变量是否存在;
<span PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变 量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字<br <span 25.当echo字符串时用逗号代替点连接符更快些。
<p <span echo一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
<span PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变 量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字<br <span 25.当echo字符串时用逗号代替点连接符更快些。 <p <span echo一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
<span 例如echo $str1,$str2。<br <span 26.Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。 <p <span 尽量多用静态HTML页面,少用脚本。
<span 也对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。<br <span 29.使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型。
<p <span 这几乎能降低1/4的存储空间。同时可以很容易对地址进行排序和快速查找;
<span
<span require_once()来加载)这能有效的保护敏感的SQL查询和路径在出错时不被显示;<br <span 36.使用 gzcompress() 和gzuncompress()对容量大的字符串进行压缩(解压)在存进(取出)数据库时。
<p <span 这种内置的函数使用gzip算法能压缩到90%;
<span (举例如下)<br <span 40.使用<span ++$i递增
<p <span When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While preincrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.
<span require_once()来加载)这能有效的保护敏感的SQL查询和路径在出错时不被显示;<br <span 36.使用 gzcompress() 和gzuncompress()对容量大的字符串进行压缩(解压)在存进(取出)数据库时。
<p <span 这种内置的函数使用gzip算法能压缩到90%;
<span (举例如下)<br <span 40.使用<span ++$i递增
<p <span When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While preincrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.
<span 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务<br <span 40. 不要随便就复制变量
<span 有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包括我)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!<br <span 41 使用选择分支语句 <p <span <span switch case好于使用多个if,else if语句,并且代码更加容易阅读和维护。
<span split()<br 转自http://www.open-open.com/lib/view/1332904714233
http://www.bkjia.com/PHPjc/440170.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/440170.htmlTechArticle好于使用多个if,else if语句,并且代码更加容易阅读和维护。...
内容总结
以上是互联网集市为您收集整理的PHP高效率写法(详解原因)_PHP教程全部内容,希望文章能够帮你解决PHP高效率写法(详解原因)_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。