文档章节

PHP语言级的性能优化

TinkerJ
 TinkerJ
发布于 2015/10/19 17:29
字数 601
阅读 24
收藏 0
点赞 0
评论 0

注:Linux  time命令可以查看一个程序的耗时

优化点 1(少写代码):自写代码冗余较多,可读性不加,并且性能低;php代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销很大;好的方法是多使用php内置变量、常数、函数。


优化点 2(PHP内置函数的性能优劣):PHP内置函数之间存在快慢差别;应多了解PHP内置函数的时间复杂度,使用相对较快的函数;例如:isset() 与 array_key_exists() 之间的性能差异。


优化点 3(尽可能少用魔法函数):PHP提供的魔法函数性能不佳,尽量避免使用魔法函数。


优化点 4(产生额外开销的错误抑制符@):PHP提供的错误抑制符只是为了方便”懒人“;@的实际逻辑--在该行代码开始前、结束后,增加Opcode,忽略报错;建议尽量不要使用@错误抑制符;vld(PHP查看opcode的扩展)。


优化点 5(合理使用内存):PHP有内存回收机制,但也应该小心使用内存;建议利用unset()及时释放不使用的内存(注:unset()可能 出现注销不掉的情况)。


优化点 6(尽量少的使用正则表到式):正则表达式的回溯开销较大;建议利用字符串处理函数实现相同逻辑。


优化点 7(避免在循环内做运算):循环内的计算式会被重复计算,例如:

       

$str = 'helle world';
for($i = 0;$i < strlen($str);$i++)
{
    // do something;
}


        代码中strlen($str)将会被重复计算,应在for循环外使用变量接受strlen($str)的返回值,然后使用该变量与$i进行比较。

$str = 'helle world';
$strlength = strlen($str);
for($i = 0;$i < $strlength ;$i++)
{
    // do something;
}



优化点 8(减少计算密集型业务):PHP不适合密集型运算的场景,PHP的语言特性决定了PHP不适合做大数据量运算;PHP适合衔接Webserver与后端服务,UI呈现。


优化点 9(务必使用带引号字符串做键值):PHP会将没有引号的键值当作常量查找,会产生多余的开销和留下程序的隐患;建议键值严格使用引号。


© 著作权归作者所有

共有 人打赏支持
TinkerJ
粉丝 0
博文 1
码字总数 601
作品 0
深圳
前端工程师
慕课网《PHP性能优化初探》学习笔记

//以下内容为慕课网《PHP性能优化初探》笔记整理 1:什么情况下遇到性能问题 语法使用不恰当 用PHP做了不擅长的问题 连接的服务不给力 PHP自身的短板 2:PHP的性能在项目所占比例约占35% 3:...

雨醉风尘 ⋅ 2016/12/06 ⋅ 0

小蚂蚁学习PHP性能优化(1)--PHP语言级性能优化

因为sphinx还没有找到比较合适的教材,今天开始学习一下PHP性能优化。记得很久之前做过这么一个功能,就是计算一级人脉下的所有推荐人的资金和,以及每个推荐人的推荐人的资金和,就形成了一...

嗜学如命的小蚂蚁 ⋅ 2015/09/22 ⋅ 0

PHP性能优化小结(1)

一.什么情况下会出现性能问题? PHP语法使用不恰当。 用php做php不擅长做的事。 连接的服务不给力。 PHP自身短板。 其它未知原因。 二.问题解决方向。 从易到难分别为以下几个方向: 语言级的...

鬼哥哥 ⋅ 2014/10/15 ⋅ 0

系统级编程语言性能大PK的笑话-Go语言

喜欢和不喜欢Go语言的都喜欢拿性能PK说事. 流传比较广的是benchmarksgame的PK数据: http://benchmarksgame.alioth.debian.org/u64q/go.php 在 benchmarksgame测试中, Go语言的性能已经由之前...

chai2010 ⋅ 2013/08/06 ⋅ 7

如何使用 APM 搞定 PHP 应用的性能优化?

APM 究竟是什么? 很多人都是第一次听说 APM 的概念,本文主要阐述如何使用 APM 的解决方案来实现 PHP 应用性能的优化。首先先介绍一下 APM (Application Performance Management)即应用性...

OneAPM蓝海讯通 ⋅ 2015/10/12 ⋅ 0

PHP 性能分析与实验——性能的宏观分析

【编者按】此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要...

OneAPM蓝海讯通 ⋅ 2015/08/18 ⋅ 0

PHP 性能分析与实验——性能的宏观分析

【编者按】此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要...

OneAPM蓝海讯通 ⋅ 2015/08/18 ⋅ 2

小蚂蚁学习PHP性能优化(2)--PHP语言级性能优化

接上篇 3. 优化点:尽可能少的使用魔法函数 情况描述:PHP提供的魔法函数,性能不佳 为什么呢?为了给PHP程序员省事,PHP语言为此做了很多 好的方法:尽可能规避使用PHP魔法函数,需要使用的...

嗜学如命的小蚂蚁 ⋅ 2015/09/23 ⋅ 0

[Zephir官方文档翻译之二] 为什么选择 Zephir?

为什么选择 Zephir? 目前的PHP应用必须使用得稳定性、性能、和功能性保持平衡。 每一个PHP应用是建立在大量的通用组件上的,而这些组件又基于大量的其它应用。 这些通用的组件可能是一个类/...

风一样的世界 ⋅ 2014/09/26 ⋅ 0

HHVM 是如何提升 PHP 性能的?

背景 HHVM 是 Facebook 开发的高性能 PHP 虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题: HHVM 到底靠谱么?是否可以用到产...

oschina ⋅ 2014/03/27 ⋅ 45

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 9分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 15分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 22分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 36分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 39分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 46分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 今天 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部