小蚂蚁学习PHP性能优化(1)

因为sphinx还没有找到比较合适的材料,今天开始学习一下PHP性能优化。记得很久之前做过这么一个功能,就是计算一级人脉下的所有推荐人的资金和,以及每个推荐人的推荐人的资金和,就形成了一个人脉树,当时的做法就是用了递归的方法来计算,其中不停的查询数据库,资源消耗相当的大,当一个人下面的直接推荐人和间接推荐人达到一二百个的时候,那就无法运行下去,这确实让人头疼了很久。今天开始学习一下高手讲解的PHP就很有必要。

PHP的性能问题的解决方法

  1. PHP语言级的性能优化
  2. PHP周边问题的性能优化
  3. PHP语言自身分析优化

压力测试工具

Apache Benchmark(AB)

简介:AB是有Apache提供的压力测试软件

使用: ./ab -n1000 -c100 http://www.sina.com

-n 请求数    -c并发数    url目标压力测试地址

这句命令运行后,主要看两个参数:

requests per second    101.65ms    (每秒可以接受几个请求)    这个值尽可能的高

time per request    9.838ms    (一个请求耗时)    该值尽可能的小

PHP语言级性能优化

1.    优化点:少些代码,多用PHP自身的能力

性能问题:自写代码冗余较多,可读性不强,性能低下。

为什么性能低?PHP代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销大

好的方法:多使用PHP内置变量,常量,函数。

2.    优化点:PHP内置函数的性能优劣

情况描述:PHP内置函数,之间依然存在快慢差异

好的建议:多去了解PHP内置函数的时间复杂度。

时间: 2024-09-30 15:05:25

小蚂蚁学习PHP性能优化(1)的相关文章

小蚂蚁学习mysql性能优化(完结)--硬件方面优化--CPU和DISK优化

数据库硬件方面优化 如何选择CPU? 是选择单核更快的CPU还是选择核数更多CPU? mysql有一些工作只能使用单核CPU mysql对CPU核数的支持并不是越多越快 建议:mysql5.5使用的服务器不要超过32核.还是建议单核频率更快的cpu. Disk IO优化 常用RAID级别简介 RAID0:也成为条带,就是把多个磁盘链接成一个硬盘使用,这个级别IO最好. RAID1:也成为镜像,要求至少有两个磁盘,每组磁盘存储的数据相同. RAID0+1:就是RAID1和RAID0的结合.同时具备

小蚂蚁学习mysql性能优化(1)--SQL以及索引优化

性能优化之mysql优化 可以从几个方面进行优化 硬件    系统配置    数据库表结构    SQL索引 成本从高到底,效果从低到高. 如何发现有问题的SQL? 使用mysql慢查询日志对有效率问题的sql进行监控. show variables like 'slow_query.log'; set global slow_query_log_file='/home/mysql/sql_log/mysql-slow.log';//日志存放的位置 set global log_queries_

小蚂蚁学习mysql性能优化(7)--数据库结构优化--选择合适的数据类型

关于SQL以及索引优化的部分终于学习完了,今天开始进入第二层次的学习,数据库的结构优化,第一部分,选择合适的数据类型. 数据类型的选择,重点在于合适二字. 1.    使用可以存下数据的最小的数据类型 比如,一个时间类型的一个数据,可以使用varchar,可以使用datetime,还可以使用int,如何选择,就看哪一种类型对我们来说是最小的,不言而喻,int类型相对来说是最小的数据类型. 2.    使用简单的数据类型. int类型要比varchar类型在mysql处理上简单的多,用int类型来

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

接上篇 3.    优化点:尽可能少的使用魔法函数 情况描述:PHP提供的魔法函数,性能不佳 为什么呢?为了给PHP程序员省事,PHP语言为此做了很多 好的方法:尽可能规避使用PHP魔法函数,需要使用的时候,权衡一下利弊 4.    优化点:产生额外开销的错误抑制符@ 情况描述:PHP提供的错误抑制符只是为了方便"懒人" @符号的实际逻辑:在代码开始前,结束后,增加了opcode,忽略了报错. 好的建议:建议尽量不要使用@错误抑制符 5.    优化点:合理使用内存 情况描述:PHP有

小蚂蚁学习mysql性能优化(4)--SQL以及索引优化--具体一些优化方法

max()的优化 例如:explain select max(`payment_date`)  from payment; 可以查看到row的行数非常的多,也就是说扫描了整张表. 为payment_date加上一个索引. create index idx_payment on payment (`payment_date`); 执行sql语句    explain select max(`payment_date`) from payment order by payment_date; 可以看

小蚂蚁学习mysql性能优化(3)--SQL以及索引优化--慢查日志分析工具和explain说明

昨天在测试操作数据库的时候碰到两个问题忘了记录下来,今天补充上去,接上篇 1. 安装测试数据库sakila时报错.Mysql server has gone away的问题.解决方法: 查看    show global variables like 'max_allowed_packet'; 一般来说会显示    max_allowed_packet    1048576 修改为    set global max_allowed_packet    =    1024*1024*16;   

Oracle 学习之性能优化(三)绑定变量

根据Oracle 学习之性能优化(二)游标中的描述,我们知道如下两条语句是不共享的. select * from emp where empno=7698; select * from emp where empno=7566; 这样就造成每次执行用户的查询都要进行硬解析,但是我们知道,其他这两个语句的执行计划应该是相同.那么有什么方法能避免不必要的硬解析吗?这里我们提供2种方法. 一.绑定变量 SQL> variable empno number; SQL> exec :empno := 7

如何学习Linux性能优化?

如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的"拦路虎".在我看来,大多数人对性能问题"投降",原因可能只有两个. 一个是你没找到有效的方法学原理,一听到"系统"."底层"这

Oracle 学习之 性能优化(十五) ASH、ADDM、AWR

ASH(Active Session History) ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件.不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成.ASH buffers 的最小值为1MB,最大值不超过30MB.内存中记录数据.期望值是记录一小时的内容. AWR(Automatic Workload Repository) 自动工作负载信息库 ASH 内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(AutomaticWorkload