PHP优化小结

1、echo 比 print 快,并且使用echo的多重参数(指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。如果使用echo $str1.$str2 就会需要 PHP 引擎首先把所有的变量连接起来,然后在输出,而echo $str1,$str2,PHP 引擎就会按照循序输出他们

2、foreach效率更高,尽量用foreach代替while和for循环。在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。(While循环比For循环执行效率要高出15倍以上,Foreach 循环比For循环快120倍以上)

3、require_once()代价昂贵。require_once和include_once需要判重,因此效率上要低,但是5.2版本后效率问题已经基本解决。

4、注销那些不用的变量尤其是大数组,以便释放内存。

5、对global变量,应该用完就unset()掉。

6、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。 (尽量少用iniset()来设置include_path)

7、如果你想知道脚本开始执行(即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME‘]要好于time()。 ($_SERVER[‘REQUEST_TIME‘]保存了发起该请求时刻的时间戳,而time()则返回当前时刻的Unix时间戳。  )

8、递增一个全局变量要比递增一个局部变量慢2倍。

9、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本

10、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销,所以尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

11、当操作字符串并需要检验其长度是否满足某种要求时,使用strlen()函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码,因为与strlen()不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

12、当执行变量$i的递增或递减时,$i++会比++$i慢一些,这种差异是PHP特有的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。

13、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作

时间: 2025-01-12 05:02:57

PHP优化小结的相关文章

iOS性能优化小结

iOS性能优化分析 首先要熟悉几个概念 PNG 和 JPG 的区别是什么? png格式的图片有alpha通道,jpeg则没有.png无损压缩,jpeg允许你选择0-100%的压缩质量.如果需要alpha通道(透明),就只能用png格式. CPU 和 GPU 如果想看看两者的区别,先得了解iOS视图背后的层级结构原理  上图中的最底下一行是硬件层,由GPU和CPU组成. 我们经常说到的硬件加速其实是指OpenGL,Core Animation/UIKit基于GPU之上对计算机图形合成以及绘制的实现

斜率凸优化小结

斜率凸优化小结 前言 很久以前考了一道叫做"林克卡特树"的题目( 还记得被八省联考支配的恐惧吗?) 正解是用直线去切一个凸函数...... 当时并不是很会.然而\(APIO\)讲课竟然讲了并且卧槽我竟然还听懂了. 所以就回来把这个坑给填了. 斜率凸优化 当遇到关于需要恰好选取\(K\)个的\(DP\)问题的时候, 一般做法就是在\(DP\)数组上再设一维.这样做时间代价是\(O(n)\)的. 其实不如给每次选取加一个权值\(C\). 那么每次选取就需要付出\(C\)的代价.所以\(C\

[2018福大至诚软工助教]测试与优化小结

[2018福大至诚软工助教]测试与优化小结 一.得分 点击表头内相应项目可针对该项目进行排序. 学号1 学号2 单元测试10 结构优化10 性能调优10 奖励分0-3 总分30-33 6367 6445 10 10 10 2 32 6387 6354 8 7 3 0 18 6285 6314 0 0 0 0 0 6319 6321 3 0 0 0 3 6391 6380 0 0 0 1 1 6306 6308 7 3 0 0 10 6348 6338 4 0 0 0 4 6328 6331 0

css写作建议和性能优化小结

1.前言 还有几天就到国庆中秋了,快要放假了,先祝大家节日快乐!之前写过js的写作建议和技巧,那么今天就来聊聊css吧!说到css,每一个网页都离不开css,但是对于css,很多开发者的想法就是,css只要能用来布局,把效果图排出来就可以了,其它的细节或者优化,不需要怎么考虑.但是我觉得css可不只是把页面的布局完成就是完事的,还需要考虑很多细节有优化,更不会像大家想得那么简单,在学习当中,如果发现什么技巧或者优化的点,我也会学以致用!那么今天,就分享下我总结的css写作建议和性能优化的一些问题

移动web开发问题和优化小结

1.前言 到目前为止,互联网行业里,手机越来越智能化,移动端占有的比例越来越高,尤其实在电商,新闻,广告,游戏领域.用户要求越来越高,网站功能越来越好,效果越来越炫酷,这就要求我们产品质量越来越高,web前端开发而言是一个挑战,是一个难题,也是一个机遇.如何让我们所开发的手机页面能有更好的交互体验,就是这篇文章的主旨:移动web开发问题和优化小结.这个只是我自己在开发的时候知道的坑,如果大家有遇到什么别的坑,欢迎补充,或者觉得我哪里写错了,欢迎指点! 2.Meta标签 页面在手机上显示时,增加这

lucene索引文件大小优化小结

随着业务快速发展,基于lucene的索引文件zip压缩后也接近了GB量级,而保持索引文件大小为一个可以接受的范围非常有必要,不仅可以提高索引传输.读取速度,还能提高索引cache效率(lucene打开索引文件的时候往往会进行缓存,比如MMapDirectory通过内存映射方式进行缓存). 如何降低我们的索引文件大小呢?本文进行了一些尝试,下文将一一介绍. 1 数值数据类型索引优化 1.1 数值类型索引问题 lucene本质上是一个全文检索引擎而非传统的数据库系统,它基于倒排索引,非常适合处理文本

Android性能优化 一 优化小结

在前几篇的博客中,我从SQLite数据库.布局.数据处理,网络等方面和大家分享了一些优化的知识.本篇博客,我将以小结的方式和大家一起回顾在Android 性能优化方面的一些注意细节. 首先,我们从Android数据库-SQLite来分析了在操作数据库时我们可以优化的地方,我将其分为了两部分,分别是: (1)索引 (2)事务 其实这两部分在任何数据库中都是存在的.索引的建立,帮助我们对于数据查询的速度有了很大的提升,同时因为在更新插入等操作时都需要建立索引,所以建立索引带来的开销也是显而易见的.在

web前端页面性能优化小结

转自blueidear:http://bbs.blueidea.com/thread-2936073-1-1.html PS:结合了精英的思想和自己的一些小小的总结~ 影响用户访问的最大部分是前端的页面.网站的划分一般为二:前端和后台.我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等.而前端呢?其实应该是属于功能的表现. 而我们建设网站的目的是什么呢?不就是为了让目标人群来访问吗?所以我们可以理解成前端才是真正和用户接触的. 除了后台需要在性能上做优化外,

Android开发经验分享(5)Android优化小结

项目中何时不会用到优化呢,现把一些优化的小经验总结下 1.万恶的static static是个好东西,声明赋值调用就是那么的简单方便,但是伴随而来的还有性能问题.由于static声明变量的生命周期其实是和APP的生命周期一样的,有点类似与Application.如果大量的使用的话,就会占据内存空间不释放,积少成多也会造成内存的不断开销,直至挂掉.static的合理使用一般用来修饰基本数据类型或者轻量级对象,尽量避免修复集合或者大对象,常用作修饰全局配置项.工具类方法.内部类. 2.无关引用 很多

稀疏向量计算优化小结

在各种算法中,向量计算是最经常使用的一种操作之中的一个.传统的向量计算,学过中学数学的同学也能明确怎么做.但在如今的大数据环境下.数据一般都会比較稀疏,因此稀疏向量的计算,跟普通向量计算.还是存在一些不同. 首先,我们定义两个向量: A=[x1,x2,?,xn] B=[y1,y2,?,yn] 定义A.B的点积为A?B,要求A?B=? 最简单粗暴的方式 最直接的方式,当然就是按中学时候就学过的方法: A?B=x1?y1+x2?y2+?+xn?yn 先不考虑乘法与加法的差别,也不考虑计算精度问题.假