Lumen使用orm操作数据与pdo操作数据性能测试
一、测试环境:
win10下搭建的docker环境、包括:nginx、php、mysql
二、测试使用工具:
使用的是Apache服务提供的ab测试命令
三、重点说明:
测试在lumen框架中使用的代码都是最精简的查询数据代码,分为orm和pdo操作数据,
由于刚开始测试时使用ab命令请求和并发都是从100开始,看不出什么时间上的变化。最
后经过多次测试,发现在没有Failed
requests为失败请求的情况下确定了我所使用的docker
环境承受的最大请求数为200和最大并发为200,下面的例子就以请求200次和并发为200
做了性能测试,结果如下:
1、使用orm操作数据库
从数据库test表查询数据,请求次数为200,并发为200测试代码如下:
public
function ormSelectTest()
{
$result = Test::where(['name' => 'name77872481', 'age' => 31])->get(['name', 'age']);
print_r($result);
die;
}
使用测试命令:
ab -n 200 -c 200 -w i.imapi.com/api/ab/ormSelectTest
>>d:\orm_and_pdo_select200.html
一共测试了10次,得到了如下结果:
第一次测试结果:
总测试时间(Time
taken for tests)为:59.747
seconds
每秒的请求数(Requests per second):3.52
第二次测试结果:
总测试时间(Time
taken for tests)为:59.693
seconds
每秒的请求数(Requests per second):3.35
第三次测试结果:
总测试时间(Time
taken for tests)为:59.386
seconds
每秒的请求数(Requests per second):3.37
第四次测试结果:
总测试时间(Time
taken for tests)为:60.499
seconds
每秒的请求数(Requests per second):3.31
第五次测试结果:
总测试时间(Time
taken for tests)为:60.279
seconds
每秒的请求数(Requests per second):3.32
第六次测试结果:
总测试时间(Time
taken for tests)为:57.430
seconds
每秒的请求数(Requests per second):3.48
第七次测试结果:
总测试时间(Time
taken for tests)为:58.390
seconds
每秒的请求数(Requests per second):3.43
第八次测试结果:
总测试时间(Time
taken for tests)为:59.857
seconds
每秒的请求数(Requests per second):3.34
第九次测试结果:
总测试时间(Time
taken for tests)为:60.297
seconds
每秒的请求数(Requests per second):3.32
第十次测试结果:
总测试时间(Time
taken for tests)为:59.262
seconds
每秒的请求数(Requests per second):3.37
2、使用pdo操作数据库
从数据库pdo_test表查询数据,请求次数为200,并发为200测试代码如下:
public functionpdoSelectTest()
{$sql="select name,age from pdo_test where name=:name and age=:age";$pdo= DB::connection()->getPdo();$result=$pdo->prepare($sql);$result->execute([':name'=>'abc28234613',':age'=>31]);while($row=$result->fetch(\PDO::FETCH_ASSOC)) {
print_r($row);
}
}
使用测试命令:
ab -n 200 -c 200 -w i.imapi.com/api/ab/pdoSelectTest
>>d:\orm_and_pdo_select200.html
一共测试了10次,得到了如下结果:
第一次测试结果:
总测试时间(Time
taken for tests)为:57.020
seconds
每秒的请求数(Requests per second):3.39
第二次测试结果:
总测试时间(Time
taken for tests)为:55.820
seconds
每秒的请求数(Requests per second):3.58
第三次测试结果:
总测试时间(Time
taken for tests)为:60.716
seconds
每秒的请求数(Requests per second):3.29
第四次测试结果:
总测试时间(Time
taken for tests)为:58.624
seconds
每秒的请求数(Requests per second):3.41
第五次测试结果:
总测试时间(Time
taken for tests)为:54.898
seconds
每秒的请求数(Requests per second):3.64
第六次测试结果:
总测试时间(Time
taken for tests)为:56.000
seconds
每秒的请求数(Requests per second):3.57
第七次测试结果:
总测试时间(Time
taken for tests)为:57.253
seconds
每秒的请求数(Requests per second):3.49
第八次测试结果:
总测试时间(Time
taken for tests)为:57.707
seconds
每秒的请求数(Requests per second):3.47
第九次测试结果:
总测试时间(Time
taken for tests)为:56.638
seconds
每秒的请求数(Requests per second):3.53
第十次测试结果:
总测试时间(Time
taken for tests)为:57.293
seconds
每秒的请求数(Requests per second):3.49
我将上面得到的数据整理成了表格进行查看:
Orm
比较
Pdo
第一次测试结果
59.747
大于
57.020
第二次测试结果
59.693
大于
55.820
第三次测试结果
59.386
小于
60.716
第四次测试结果
60.499
大于
58.624
第五次测试结果
60.279
大于
54.898
第六次测试结果
57.430
大于
56.000
第七次测试结果
58.390
大于
57.253
第八次测试结果
59.857
大于
57.707
第九次测试结果
60.297
大于
56.638
第十次测试结果
59.262
大于
57.293
通过以上数据可以看出Orm操作数据的性能要比pdo操作数据差。