Home  >  Article  >  php教程  >  优化PHP性能的五个实用技巧

优化PHP性能的五个实用技巧

WBOY
WBOYOriginal
2016-06-06 19:59:18720browse

以下是五个优化技巧,熟练掌握后对于开发还是很有帮助的。 1.对字符串使用单引号 PHP引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉PHP引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一

以下是五个优化技巧,熟练掌握后对于开发还是很有帮助的。

1.对字符串使用单引号

PHP引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉PHP引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字符串连接而不是双引号字符串。

<ol>
<li><span><span>BAD:  </span></span></li>
<li><span>      </span></li>
<li>
<span>    $</span><span>output</span><span> = “This is a plain string”;  </span>
</li>
<li><span>      </span></li>
<li><span>    GOOD:  </span></li>
<li><span>      </span></li>
<li>
<span>    $</span><span>output</span><span> = </span><span>'This is a plain string'</span><span>;  </span>
</li>
<li><span>      </span></li>
<li><span>    BAD:  </span></li>
<li><span>      </span></li>
<li>
<span>    $</span><span>type</span><span> = “mixed”;  </span>
</li>
<li><span>      </span></li>
<li>
<span>    $</span><span>output</span><span> = “This is a $type string”;  </span>
</li>
<li><span>      </span></li>
<li><span>    GOOD:  </span></li>
<li><span>      </span></li>
<li>
<span>    $</span><span>type</span><span> = </span><span>'mixed'</span><span>;  </span>
</li>
<li><span>      </span></li>
<li>
<span>    $</span><span>output</span><span> = </span><span>'This is a '</span><span> . $type .' string'; </span>
</li>
</ol>

2.不要随便就复制变量

有时候为了使PHP代码更加整洁,一些PHP新手(包括我)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入512KB字节的文字到文本输入框中,这样就会导致1MB的内存被消耗!

<ol>
<li><span><span>BAD:  </span></span></li>
<li><span>      </span></li>
<li>
<span>    $</span><span>description</span><span> = $_POST['description'];  </span>
</li>
<li><span>      </span></li>
<li><span>    echo $description;  </span></li>
<li><span>      </span></li>
<li><span>    GOOD:  </span></li>
<li><span>      </span></li>
<li><span>    echo $_POST['description']; </span></li>
</ol>

3.使用echo函数来输出字符串

使用echo()函数来打印结果,除了更容易阅读之外,在下个例子中,你还可以看到有更好的性能。

<ol>
<li><span><span>BAD:  </span></span></li>
<li><span>     </span></li>
<li><span>   print($myVariable);  </span></li>
<li><span>     </span></li>
<li><span>   GOOD:  </span></li>
<li><span>     </span></li>
<li><span>   echo $myVariable; </span></li>
</ol>

4.不要在echo中使用连接符

很多PHP程序员(有包括我)不知道在用echo输出多个变量的时候,其实可以使用逗号来分开的,而不必用字符串先把他们先连起来。如下面的第一个例子中,由于使用了连接符就会有性能问题,因为这样就会需要PHP引擎首先把所有的变量连接起来,然后在输出,而在第二个例子中,PHP引擎就会按照循序输出他们。

<ol>
<li><span><span>BAD:  </span></span></li>
<li><span>      </span></li>
<li><span>    echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;  </span></li>
<li><span>      </span></li>
<li><span>    GOOD:  </span></li>
<li><span>      </span></li>
<li><span>    echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city; </span></li>
</ol>

5.使用switch/case代替if/else

对于只有单个变量的判断,使用switch/case语句而不是if/else语句,会有更好的性能,并且代码更加容易阅读和维护。

<ol>
<li><span><span>BAD:  </span></span></li>
<li><span> </span></li>
<li><span>if($_POST['action'] == 'add‘) {  </span></li>
<li><span> </span></li>
<li><span>addUser();  </span></li>
<li><span> </span></li>
<li><span>} elseif ($_POST['action'] == 'delete’) {  </span></li>
<li><span> </span></li>
<li><span>deleteUser();  </span></li>
<li><span> </span></li>
<li><span>} elseif ($_POST['action'] == 'edit‘) {  </span></li>
<li><span> </span></li>
<li><span>editUser();  </span></li>
<li><span> </span></li>
<li><span>} else {  </span></li>
<li><span> </span></li>
<li><span>defaultAction();  </span></li>
<li><span> </span></li>
<li><span>}  </span></li>
<li><span> </span></li>
<li><span>GOOD:  </span></li>
<li><span> </span></li>
<li><span>switch($_POST['action']) {  </span></li>
<li><span> </span></li>
<li><span>case 'add':  </span></li>
<li><span> </span></li>
<li><span>addUser();  </span></li>
<li><span> </span></li>
<li><span>break;  </span></li>
<li><span> </span></li>
<li><span>case 'delete':  </span></li>
<li><span> </span></li>
<li><span>deleteUser();  </span></li>
<li><span> </span></li>
<li><span>break;  </span></li>
<li><span> </span></li>
<li><span>case 'edit':  </span></li>
<li><span> </span></li>
<li><span>editUser();  </span></li>
<li><span> </span></li>
<li><span>break;  </span></li>
<li><span> </span></li>
<li><span>default:  </span></li>
<li><span> </span></li>
<li><span>defaultAction();  </span></li>
<li><span> </span></li>
<li><span>break;  </span></li>
<li><span> </span></li>
<li><span>} </span></li>
</ol>

来自:chinaitlab


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn