40 条技巧优化 php 代码
时间:2009-11-15 21:04 来源:PHP100 中文网 作者:佚名 点击: 260 次 【字号:大 中 小】 1.如果一个方法能被静态,那就声明他为静态的,速度可提高 1/4; 2.echo 的效率高于 print,因为 echo 没有 返回值,print 返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; 4.销毁变量去释放内存, 特别是大的数组; 5.避免使用像__get, __set, __autol
1.如果一个方法能被静态,那就声明他为静态的,速度可提高 1/4; 2.echo 的效率高于 print,因为 echo 没有返回值,print 返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; 4.销毁变量去释放内存,特别是大的数组; 5.避免使用像__get, __set, __autoload 等魔术方法; 6.requiere_once()比较耗资源; 7.在 includes 和 requires 中使用绝对路径,这样在分析路径花的时间更少; 8.如果你需要得 sexinsex 到脚本执行时的时间, $_SERVER['REQUSET_TIME']优于 time(); 9.能使用字符处理函数的,尽量用他们,因为效率高于正则;//php100 10.str_replace 字符替换比正则替换 preg_replace 快,但 strtr 比 str_replace 又快 1/4; 11.如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换,并且参数
列表 不是太长,可以考虑多用一些简洁的替换语句,一次只替换一个字符,而不是接受数组做为 查找和替换参数.大事化小,1+1>2; 12.用@掩盖错误会降低脚本运行速度; 13.$row['id']比$row[id]速度快 7 倍,建议养成数组键加引号的习惯; 14.错误信息很有用; 15.在循环里别用函数,例如 For($x=0; $x < count($array); $x), count()函数在外面先计算; 16.在方法里建立局部变量速度最快,97xxoo 几乎和在方法里调用局部变量一样快;
17.建立一个全局变量要比局部变量要慢 2 倍; 18.建立一个对象属性(类里面的变量)例如($this->prop++)比局部变量要慢 3 倍; 19.建立一个未声明的局部变量要比一个初始化的局部变量慢 9-10 倍; 20.声明一个未被任何一个函数使用过的全局变量也会使性能降低(和声明相同数量的局部 变量一样),PHP 可能去检查这个全局变量是否存在; 21.方法的性能和在一个类里面定义的方法的数目没有关系, 因为我添加 10 个或多个方法到 测试的类里面(这些方法在测试方法的前后)后性能没什么差异; 22.在子类里方法的性能优于在基类中;//PHP100 中文网 23.只调用一个参数并且函数体为空的函数运行花费的时间等于 7-8 次$localvar++运算,而 一个类似的方法(类里的函数)运行等于大约 15 次$localvar++运算; 24.Surrounding your string by ' instead of " will make things interpret a little faster since php looks for variables inside "…" but not inside '…'. Of course you can only do this when you don't need to have variables in the string. 25.当输出字符串时用
逗号代替点分割更快些.注意:这只对 echo 起作用,这个函数能接 受一些字符串作为参数; 26.在 apache 服务器里一个 php 脚本页面比相应的 HTML 静态页面生成至少要多花 2-10 倍的时间,建议多用些静态
HTML 页面和少量的脚步; 27.除非你的安装了缓存,不然你的 php 脚本每次被访问都需要被重编译.建议安装个 php 缓存程序,这样通过去除一些重复的编译来很明显的提高你 20-100%的性能; 28.建议用 memcached,高性能的分布式内存对象缓存
系统,提高动态
网络应用
程序性能, 减轻数据库的负担; 29.使用 ip2long()和 long2ip()函数把 IP 地址转成整型存放进数据库而非字符型.这几乎能 降低 1/4 的存储空间.同时可以很容易对地址进行排序和快速查找; 30.使用 checkdnsrr()通过域名存在性来确认部分 email 地址的有效性,这个内置函数能保 证每一个的域名对应一个 IP 地址;//php100
31.如果你在使用 php5 和 mysql4.1 以上的版本,考虑使用
mysql_*的改良函数 my
sqli_*; 32.试着喜欢使用三