php提高程序效率的24个小技巧
本文转自《php必须知道的300个问题》一书,在此记录方便以后查看
(1)用单引号代替双引号来包含字符串,这样做会更快些。因为php会在双引号包围的字符串中搜寻变量,单引号则不会。注意:只有echo能这么做,它是一种可以把多个字符串当做参数的“函数”(echo是语言结构,不是真正的函数)。
(2)$row['id']的速度要比$row[id]快很多。
(3)echo比print快,并且使用echo的多重参数代替字符串连接,比如:echo $str1,$str2
(4)foreach效率更高,尽量用foreach代替while和for循环。
(5)在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
(6)注销那些不用的变量,尤其是大数组,以便释放内存。
(7)尽量不要使用_get、_set、_autoload。
(8)使用include()包含文件时,尽量使用绝对路径,因为它省去了php去include_path中查找文件的时间,解析操作系统路径所需的时间会更少。
(9)如果想获取脚本开始执行(即服务器端收到客户端请求)的时间,使用$_SERVER['REQUEST_TIME']要优于time()。
(10)在项目中尽量应用php内置函数实现功能,同事尽量使用函数代替正则表达式完成相同功能。
(11)str_replace函数比preg_replace函数快,但strtr函数的效率比str_replace函数还要高。
(12)使用选择分支语句(switch)优于使用多个if,else if语句。
(13)不提倡使用@屏蔽错误信息,它的效率非常低。
(14)开启Apache的mod_deflate模块,可以提高网页的浏览速度。
(15)在连接数据库时,尽量使用短连接,要及时关闭使用完毕的数据库连接。
(16)在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。
(17)派生类中的方法运行起来要快于在基类中定义的同样的方法。如果能将类的方法定义成static,就尽量定义成static,它的速度会提升很多。
(18)尽量少进行文件操作,虽然php的文件操作效率也不低。
(19)Apache解析一个php脚本的时间要比解析一个静态HTML页面慢很多。尽量多用静态HTML页面,少用php脚本。
(20)除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套php缓存机制通常可以提升25%~100%的性能,以免除编译开销。
(21)当操作字符串并需要检验其长度是否满足某种要求时,第一想法是使用strlen()函数。此函数执行起来速度快,因为它不做任何计算,只返回在zval结构(C的内置函数结构,用于储存php变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤。在某些情况下,可以使用isset()加速执行代码。例如:
<?php
if(strlen($foo)<5){ echo "Foo is too short" $$}
if(!isset($foo{5})){ echo "Foo is too short" $$}
?>
调用isset()恰巧比strlen()快,因为与strlen()不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中没有花太多开销。
(22)当执行变量$i的递增或递减时,$i++会比++$i慢一些(仅限php语言)
(23)并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。
(24)如果可以通过file_get_contents代替file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为它的效率要高很多。但是,要注意file_get_contents在打开一个URL文件时的php版本问题。
以上内容,我尚未验证过,提高效率神马的,等我先学会低效率的傻瓜方法再说吧O(∩_∩)O哈!
模版世界:http://www.templatesy.com
php提高程序效率的24个小技巧的更多相关文章
- 充分利用CPU高速缓存,提高程序效率(原理篇)
提高程序效率应该充分利用CPU的高速缓存.要想编写出对CPU缓存友好的程序就得先明白CPU高速缓存的运行机制. i5-2400S: 1.有三级缓存分别为 32k(数据.指令缓存分开,分为32k),25 ...
- JavaScript初学者福利!必须收藏的24条小技巧
JavaScript初学者福利!必须收藏的24条小技巧 前端小编 发布于 2013-12-15 22:52 查看数: 2343 评论数: 6 帖子模式 这篇文章将回顾JavaScript的知识 !如果 ...
- C与C++中的常用提高程序效率的方法
1.用a++和++a及a+=1代替a=a+1,用a--和--a及a-=1代替a=a-1 通常使用若把一个函数定义为内联函数,则在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代 ...
- TKE 体验升级:更快上手 K8s 的24个小技巧
作者 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务. 背景 "功能"解决是产品有或者没有一个能力的问题,有了" ...
- android图片的缓存--节约内存提高程序效率
如今android应用占内存一个比一个大,android程序的质量亟待提高. 这里简单说说网络图片的缓存,我这边就简单的说说思路 1:网络图片,无疑须要去下载图片,我们不须要每次都去下载. 维护一张表 ...
- Windows下程序打包发布时的小技巧
一.背景 Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作 ...
- Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)
Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里 ...
- Ubuntu下编写终端界面交互式C++小程序的一些Trick(小技巧,gnome-terminal)
类getch()功能的实现 I 只要在Windows下用过C/C++就会很熟悉conio.h库中的一个函数getch(),它可以绕过终端输入缓冲区直接从键盘读取一个字符,并且不在界面上显示. 但如果想 ...
- 开发Android应用 提升性能的小技巧
前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...
随机推荐
- javaWeb 在jsp中 使用自定义标签输出访问者IP
1.java类,使用简单标签,jsp2.0规范, 继承 SimpleTagSupport public class ViewIpSimpleTag extends SimpleTagSupport { ...
- 快速搭建Redis缓存数据库
之前一篇随笔——Redis安装及主从配置已经详细的介绍过Redis的安装于配置.本文要讲的是如何在已经安装过Redis的机器上快速的创建出一个新的Redis缓存数据库. 一.环境介绍 1) Linux ...
- PHP获取客户端真实IP的自定义函数
<?php //虽然使用 $_SERVER[REMOTE_ADDR] 也可以获取,但是要获取真实的客户端IP地址,需要使用下面的方法: function _getIP(){ $ip=getenv ...
- Integer Inquiry -TJU1112
作为最简单的高精度加法,要注意的是如下几点, 第一,因为是数位达到上百位的大数,所以只能用字符串数组来存贮. 第二,为了方便之后的相加操作,应该把字符串数组逆序转化为一个整型数组. 第三,在控制进位的 ...
- 在repeart中获取行数据
ItemCreated(){ if (e.Item.DataItem != null) { string examTypeId = ((DataRowView)e.Item.DataItem).Row ...
- oracle驱动地址
D:\app\LHComputer\product\12.1.0\dbhome_1\ODP.NET\bin\2.x
- nginx 的限制连接模块limit_zone与limit_req_zone
转载于:http://storysky.blog.51cto.com/628458/642970/ nginx 上有两个限制连接的模块一个是 limit_zone 另一个是 limie_req_zon ...
- Android Context完全解析
Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点分析, ...
- C++导出文件后缀dll,lib,exp,def
简要的介绍一下在微软开发工具中(VC)静态链接库和动态链接库生成过程中出现的.dll .lib .def 和 .exp文件类型.windows平台上可执行文件可能是一个.exe文件也可能四个.dl ...
- java-资源管理器try-with-resource
在java编程中会遇到很多关闭资源的问题,但是,往往我们的关闭不能百分百正确,所以java7中出现了新的资源管理器方法try-with-resource,这是一项重要的改进,因为没人能再手动关闭资源时 ...