PHP性能优化总结

【1】在循环中判断时,数值判断使用恒等要比等于高效。

【2】在数组中,数组下标是字母时一定要加上单引号或双引号。因为$row[‘id‘]的效率是$row[id]的7倍。

【3】不要使用“@”去屏蔽错误输出。用@屏蔽错误消息的做法非常低效。

若你真的想抑制报错,可以通过设置error_reporting来控制,好比栗子中的,行前设置,行后取消即可。

【4】尽量不要在for循环中使用函数,比如for ($x=0; $x < count($array); $x)每循环一次都会调用count()函数。

【5】注销那些不必的变量尤其是大数组,以即开释内存。

【6】数据库连接该使用完毕时当闭掉。

【7】使用挑选分支语句(switch case)佳于使用少个if,else if语句。

【8】尽量使用include/require, 而不是include_once/require_once.

在《高性能PHP应用开发》(下载http://pan.baidu.com/share/link?shareid=4170631476&uk=2016712711)一书中有个测试。

代码:

<?php

require_once("ClassA.php");

require_once("ClassB.php");

require_once("ClassC.php");

require_once("ClassD.php");

<?php

require("ClassA.php");

require("ClassB.php");

require("ClassC.php");

require("ClassD.php");

echo ‘Only testing require_once...‘;

类ABCD四个文件分别为四个空类,分别放在"ClassA.php","ClassB.php","ClassC.php","ClassD.php"四个文件中:

Class A{

}

Class B{

}

Class C{

}

Class D{

}

试用ab命令模拟10万个请求,同时有5个并发。

ab -c 10 -n 100000 localhost/index.php

结果显示 require_once 响应时间为99毫秒,每秒支持100.63个请求

而require响应时间为94.8毫秒,减少5毫秒,同时并发数增加到105.44个。

参考:再一次, 不要使用(include/require)_once http://www.laruence.com/2012/09/12/2765.html

【9】不要重复造车。很多人在重复写着已有的内置function.

现如今的PHP:

- 有2700多个function (现在更多了)

- 80个核心的扩展

- 154个pecl扩展

选择已经存在的用吧,自己搞毛啊!

【10】假如在代码中具有大批耗时的函数,最好能够斟酌用C扩大的方法完成它们。

【11】str_replace函数比preg_replace函数快,但strtr函数的效力是str_replace函数的四倍。

【12】合理运用字符串比较函数:strncmp / strncasecmp 要比 substr 什么的好很多,不管怎样,都比preg_*系列的字符串匹配方法好。

【13】使用echo的多重参数取代字符串衔接。即使用逗号而不是点连接字符串。

例如:

$name = ‘THOMAS‘;

echo ‘Hello,My name is ‘ . $name; //不推荐

echo ‘Hello,My name is ‘ , $name; //推荐,速度更快

【14】不要引入不需要的文件。每个php脚本文件的引入,都会造成zend编译与执行环节。编译耗时远大于执行的时间。

【15】获取时间的方式:请不要一遍遍的调用 time()直接使用 $_SERVER[‘REQUEST_TIME‘]即可得到秒级别的时间戳,不必调用函数

【16】 Session 存储。PHP默认是把SESSION存储在一个文件中。把存储session分落在一个目录中,减轻单位间的读写频度。

- 为每个项目设置他们独立的session存储目录

- 利用php.ini的配置 session.save_path=”N;/path”将session存储在多个目录中

【17】 Session不采用文件存储。文件存储不是一个优秀的方案

- mm – 固话的共享内存存储

- apc – 用APC存储、获取、删除

- memcache – 基于内存的存储服务

【18】系统调用时昂贵的。请手动释放你的资源(Please release resources manually)

<a href="http://www.laruence.com/2012/07/25/2662.html" target="_blank">参考</a>

【19】代码约简单,跑得越快。为啥,因为简单。

原文地址:https://www.cnblogs.com/chenduzizhong/p/11102422.html

时间: 2024-10-04 23:06:26

PHP性能优化总结的相关文章

iOS开发——项目实战总结&amp;UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

Java性能优化之JVM GC(垃圾回收机制)

Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行.当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成.GC优化很多时候就是减少stop-the-world 的发生. JVM GC回收哪个区域内的垃圾? 需要注意的是,JV

Spark性能优化指南——高级篇

Spark性能优化指南--高级篇 [TOC] 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数据倾斜发生时的现象 绝大多数tas

Mysql数据库性能优化(一)

参考 http://www.jb51.net/article/82254.htm 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库. mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面

Android应用程序性能优化Tips

主要介绍一些小细节的优化技巧,虽然这些小技巧不能较大幅度的提升应用性能,但是恰当的运用这些小技巧并发生累积效应的时候,对于整个App的性能提升还是有不小作用的.通常来说,选择合适的算法与数据结构会是你首要考虑的因素,在这篇文章中不会涉及这方面的知识点.你应该使用这篇文章中的小技巧作为平时写代码的习惯,这样能够提升代码的效率. 通常来说,高效的代码需要满足下面两个原则: 不要做冗余的工作 尽量避免执行过多的内存分配操作 To ensure your app performs well across

使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化

本篇教程我们主要讲解在游戏界面上的布局一般遵循哪些原则和一些性能优化的通用方法. 接着教程(五),我们通过Loading类一次性加载了全部图像素材,现在要把我们所用到的素材变成图片对象显示在界面上,由上而下,首先是top层,top里面包涵了玩家(微信)头像,关卡信息,怪物血条信息,玩家金币,玩家宝石,玩家总攻击力. 定义函数 setTop 来初始化top层: function setTop() { TopDiv = new LSprite();//定义top层 var Topshape = ne

电商邮件服务平台性能优化谈

从今年一月份开始,团队陆续完成了邮件服务的架构升级.新平台上线运行的过程中也发生了一系列的性能问题,即使很多看起来微不足道的点也会让整个系统运行得不是那么平稳,今天就将这段时间的问题以及解决方案统一整理下,希望能起到抛砖的作用,让读者在遇到类似问题的时候能多一个解决方案. 新平台上线后第一版架构如下: 这版架构上线后,我们遇到的第一个问题:数据库读写压力过大后影响整体服务稳定. 表现为: 1.数据库主库压力高,同时伴有大量的读,写操作. 2.远程服务接口性能不稳定,业务繁忙时数据库的插入操作延迟

web前端性能优化

前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒,99%的用户会关闭这个网页.也许这样讲,各位还不会有太多感触,接下来我列举一组数据:Google网站访问速度每慢400ms就导致用户搜索请 求下降0.59%;Amazon每增加100ms网站延迟将导致收入下降1%;雅虎如果有400ms延迟会导致流量下降5-9%.网站的加载速度严重影响了用户体验,也决

架构设计:系统存储(8)——MySQL数据库性能优化(4)

================================ (接上文<架构设计:系统存储(7)--MySQL数据库性能优化(3)>) 4-3.InnoDB中的锁 虽然锁机制是InnoDB引擎中为了保证事务性而自然存在的,在索引.表结构.配置参数一定的前提下,InnoDB引擎加锁过程是一样的,所以理论上来说也就不存在"锁机制能够提升性能"这样的说法.但如果技术人员不理解InnoDB中的锁机制或者混乱.错误的索引定义和同样混乱的SQL写操作语句共同作用,那么导致死锁出现的

Linq To Nhibernate 性能优化(入门级)

最近都是在用Nhibernate和数据库打交道,说实话的,我觉得Nhibernate比Ado.Net更好用,但是在对于一些复杂的查询Nhibernate还是比不上Ado.Net.废话不多说了,下面讲讲Linq To Nhibernate的性能优化. 第一点:应该要分清楚当前代码是在数据库上执行,还是在内存中执行(或者什么时候应该在数据库上做,什么时候应该在内存做) 我们在在做查询的时候,常见的使用方法 上面是使用了Iqueryable接口的,它会把数据先筛完了之后,再返回给我们 这个在数据库里呢