PHP编码的几个最佳实践
来源:互联网 发布:广联达软件官方售价 编辑:程序博客网 时间:2024/06/10 21:48
1.用逗号连接echo字符串
$name='orange';$address='BeiJing';echo 'Hi,'.$name.'! Welcome to '.$address;//慢echo 'Hi,',$name,'! Welcome to ',$address;//快,建议方式
原因可以查看两者的opcode,用逗号的方式和用点号方式的opcode如下
2.使用require还是require_once
老问题了,Lerdof N年前就提出来了,建议用require,因为require_once发起少量的stat调用,我们可以通过ab来测试一下效率
#a.php文件
require_once('ClassA.php');require_once('ClassB.php');require_once('ClassC.php');echo 'end';
测试ab -c 10 -n 10000 http://localhost/orange/a.php 同时10个请求共请求10000次,结果如下:
#b.php文件
require('ClassA.php');require('ClassB.php');require('ClassC.php');echo 'end';
同样测试测试ab -c 10 -n 10000 http://localhost/orange/b.php 同时10个请求共请求10000次,结果如下:
增加了近20的并发量!
3.提前计算循环长度
如下代码
$items=array(0,1,2,3,4,5,6,7,8,9);for($i=0;$i<count($items);$i++) { $temp=$items[$i]*$items[$i]; }
循环是如何执行的?
* $i初始化0,调用count($items)检测,平方;
* $i等于1,调用count($items)检测,平方;
* $i等于2,调用count($items)检测,平方;
* ...........................
count($items)执行了count($items)遍!所以我们提前计算循环长度,实验对比
#a.php文件
$start=microtime(true);$items=array_fill(0,100000,'orange');for($i=0;$i<count($items);$i++) { $temp=$items[$i].$items[$i]; } echo microtime(true)-$start;
执行结果:
#b.php文件
$start=microtime(true);$items=array_fill(0,100000,'orange');$count=count($items);for($i=0;$i<$count;$i++) { $temp=$items[$i].$items[$i]; } echo microtime(true)-$start;
执行结果:
4.使用foreach、for、while循环数组
老问题了,不解释,在此就上一张表,看表后,你自己选择吧!
10万元素数组PHP循环执行平均时间
5.勿要追求极致的面向对象
面向对象虽然有各种好处,但效率损失是个硬伤。
#a.php文件
/*** 属性private,get/set齐全*/class Student{ private $name; private $age; public function setAge($age){ $this->age = $age; } public function getAge(){ return $this->age; } public function setName($name){ $this->name = $name; } public function getName(){ return $this->name; }}$student=new Student();$start=microtime(true);for($i=0;$i<100000;$i++){ $student->setAge($i);}echo microtime(true)-$start;
执行时间
#b.php文件
/*** 属性public,直接赋值属性*/class Student{ public $name; public $age;}$student=new Student();$start=microtime(true);for($i=0;$i<100000;$i++){ $student->age=$i;}echo microtime(true)-$start;
效率提升至3000%..............................
文章来源:http://www.seo0395.com/archives-146
潘军伟博客长期分享一些自己在技术成长道路上的遇到的难题以及解决方案!
- PHP编码的几个最佳实践
- PHP编码的几个最佳实践
- 最重要的 10 几个 J2EE 最佳实践
- 最重要的 10 几个 J2EE 最佳实践
- 最重要的 10 几个J2EE 最佳实践
- 最重要的 10 几个J2EE 最佳实践
- Java编程的几个最佳实践
- 最重要的 10 几个 J2EE 最佳实践
- 产品待办列表的几个最佳实践
- Log4j 几个最佳实践
- jQuery的编码标准和最佳实践
- jQuery的编码标准和最佳实践
- Python最佳编码实践
- PHP最佳实践之多字节字符串、字符编码
- PHP的10种最佳实践
- PHP与UTF-8的最佳实践
- PHP 与 UTF-8 的最佳实践
- PHP最佳实践
- nucleo F072开发板 SPI tft 屏显
- java 几种简单排序实现代码
- 带最小值操作的栈
- mysql group by 用法解析(详细)
- Java设计模式-装饰者模式
- PHP编码的几个最佳实践
- javascript深入理解js闭包
- [Unity基础]将sprite导出为texture
- 大脑如同编程,bug如何修复?
- Android studio 导出jar包并混淆和aar
- 友善之臂smart210启动wifi热点
- 【高级算法】遗传,模拟退火,禁忌,Lasvegas等算法详解与实现
- JAVA_SE系列:17.扩展后的赋值运算符
- netty 流数据的传输处理