[PHP]Yaf + composer 引起大幅性能下降
composer.json 文件可以用命令 composer init 创建,命令是交互式的。
也可以直接编辑一个 json 文件,如下:
repositories 中 url 使用中国全量镜像地址.
要引入依赖包,可以直接加进去,也可以用命令行,composer require "predis/predis:v1.1.1"
加入 require-dev 就加上 --dev 选项.
{
"name": "farwish/yafapp",
"type": "app",
"description": "application",
"license": "MIT",
"authors": [
{
"name": "farwish",
"email": "farwish(a)foxmail.com"
}
],
"require": {
"php": ">=5.4.0",
"predis/predis": "v1.1.1"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
composer -v 查看所有选项和命令
使用自动加载,只需在框架启动文件中加入 require "vendor/autoload.php"; 在 Yaf 中可以这样做:
class Bootstrap extends Yaf_Bootstrap_Abstract{ /**
* 注册composer
*/
public function _initAutoload()
{
require __DIR__ . "/../vendor/autoload.php";
} ...
}
然后就可以直接使用类库了,非常方便。
// 使用Predis库
$client = new Predis\Client();
$client->set('foo', 'bar');
echo $client->get('foo');
不过使用 composer 自动加载和大类库会产生比较大的性能消耗;下面只使用内置api进行操作。
// 使用扩展内置类
$client = new Redis();
$client->set('foo', 'bar');
echo $client->get('foo');
用ab进行简单压测:ab -c 100 -n 1000 http://localhost/yafapp/index.php/index/index
使用 redis 扩展内置api,qps 稳定 >1200.
使用 composer 自动加载依赖类库,qps 会降至 800.
使用 Predis 类库操作 redis,qps 则只有 250~300.
composer 自动加载优化,可以把需要自动加载的类库放在 vender/composer/autoload_classmap.php 中,
laravel 的 php artisan optimize 也相当于下面这条命令,映射文件以 "命名空间"=>"绝对地址" 的大数组返回,
从测试结果来看,这个提升比例在个位数。
$ composer dump-autoload --optimize
<?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); return array(
'Predis\\Autoloader' => $vendorDir . '/predis/predis/src/Autoloader.php',
'Predis\\Client' => $vendorDir . '/predis/predis/src/Client.php',
...
);
下面的命令用来清除自动加载类库的键值映射。
$ composer dump-autoload
<?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); return array(
);
结论:composer 带来了项目管理容易度,但性能不乐观,适用功能型系统,可以有大量类库使用;
如果开发当今互联网应用,可以说直接废。
Link: http://www.cnblogs.com/farwish/p/5628192.html
[PHP]Yaf + composer 引起大幅性能下降的更多相关文章
- jvm的代码缓存耗尽导致性能下降
在没遇到这个问题之前,我对JVM的解释模式与编译模式的代码性能相差有多大,是没有感觉的,只是觉得编译模式会比解释模式性能好那么一点点吧. 但是经历过这次以后,让我对JVM的即时编译产生了兴趣.先来看看 ...
- Redis大幅性能提升之Batch批量读写
Redis大幅性能提升之Batch批量读写 提示:本文针对的是StackExchange.Redis 一.问题呈现 前段时间在开发的时候,遇到了redis批量读的问题,由于在StackExchange ...
- Oracle迁移到MySQL性能下降的注意点(转)
背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障.在我的记忆里面淘宝最初从Oracle ...
- MySQL 5.7 分区表性能下降的案例分析
转载自:https://mp.weixin.qq.com/s/K3RpSBAIWFwGCIWyfF0QPA 前言:希望通过本文,使MySQL5.7.18的使用者知晓分区表使用中存在的陷阱,避免在该版本 ...
- 一个MySQL 5.7 分区表性能下降的案例分析
告知MySQL5.7.18的使用者分区表使用中存在的陷阱,避免在该版本上继续踩坑.同时通过对源码的讲解,升级MySQL5.7.18时分区表性能下降的根本原因,向MySQL源码爱好者展示分区表实现中锁的 ...
- (转)一个MySQL 5.7 分区表性能下降的案例分析
一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...
- SQL Server ->> 性能调优案例之 -- 包含递归查询的视图导致整个查询语句性能下降
有个语句最近性能下降很厉害,原本1秒就可以查询完毕的事情现在居然需要3-4分钟. 首先我的做法是先快速找出导致整个语句下降的元凶.在这个例子里面查询语句有3个JOIN字句,我通过删除某一个JOIN节点 ...
- 4.性能下降原因和常见的Join查询
性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...
- MySQL字符集不一致导致性能下降25%,你敢信?
故事是这样的: 我在对MySQL进行性能测试时,发现CPU使用率接近100%,其中80%us, 16%sys,3%wa,iostat发现磁盘iops2000以下,avgqu-sz不超过3,%util最 ...
随机推荐
- 使用jquery的delay方式模拟sleep
javascript中并没有原生sleep函数可供调用,一般来说为了实现sleep功能,大都是采用SetTimeout来模拟,以下片段采用jquery的delay方法来模拟,也算是提供了另外一个视角吧 ...
- Windows,caffe 仅cpu
http://caffe.berkeleyvision.org/installation.html 按着官网的步骤:https://github.com/BVLC/caffe/tree/windows ...
- 堆外内存操作类ByteBuffer
本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明: 1 相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明 希望对想使用直接内存 ...
- [ActionScript 3.0] NetConnection建立客户端与服务器的双向连接
一个客户端与服务器之间的接口测试的工具 <?xml version="1.0" encoding="utf-8"?> <!--- - - - ...
- work flow
- 鸟哥的Linux私房菜第零章
CPU从主存中读取数据通过微指令集控制和进行计算.主存储器内的数据则是从输入单元所传输进来,而CPU处理完毕的数据也必须要先写回主存储器中, 最后数据才从主存储器传输到输出单元.内存又称主存,是CPU ...
- jquery 监听radio选中,取值
$(document).ready(function(){ $("input[name=discount]").each(function(){ $(this).click(fun ...
- ios 屏幕概况
转:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
- (整理)IIS 7 503 "service unavailable" errors
原文地址:http://mvolo.com/where-did-my-iis7-server-go-troubleshooting-503-quotservice-unavailablequot-er ...
- 54. Search a 2D Matrix && Climbing Stairs (Easy)
Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This m ...