原文摘自:http://orangeholic.iteye.com/blog/1763937
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循环执行平均时间 
	
		
			| foreach    0.0078毫秒 | 
		
			| while   0.0099毫秒 | 
		
			| for   0.0105毫秒 | 
	
5.勿要追求极致的面向对象 
面向对象虽然有各种好处,但效率损失是个硬伤。 
#a.php文件 
	
		- 
			  
		
- 
			  
		
- 
			   
		
- 
			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文件 
	
		- 
			  
		
- 
			  
		
- 
			   
		
- 
			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%.............................. 
PHP编码的几个最佳实践
原文:http://blog.chinaunix.net/uid-7374279-id-5152339.html