IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 再测PHP框架Jsnpp和thinkphp6性能测试比较 -> 正文阅读

[PHP知识库]再测PHP框架Jsnpp和thinkphp6性能测试比较

由于好奇Jsnpp框架的性能究竟怎样,所以在之前进行了一次性能测试,参照对象是thinkphp6,得出的结论是“Jsnpp框架可以在thinkphp6的性能基数上提升20%的性能”,详见《PHP框架Jsnpp和thinkphp6性能测试比较》这篇文章,文中所述的这次测试是使用在页面上显示“Hello World!”的方式进行测试的,测试的是框架基础执行性能。文章发布后,有朋友留言,说是光是测试“Hello World!”毫无覆盖率可言。之前的测试只是简单的找个同类框架比较一下看看Jsnpp的性能相对来说怎么样,因为使用的时候感觉是蛮快的,也没考虑太多,仅仅是觉得好玩就把文章发出去了。通过这位网友这么一说,确实也想看看其他方面的测试结果如何,所以有了这次测试。测试结果令我感到十分意外,Jsnpp框架相对于thinkphp6的性能提升远远不止20%的提升量,在数据库操作下Jsnpp框架竟然可以达到thinkphp6的3.8倍性能。

这次测试的参考对象我依然使用了thinkphp6,确切的说是6.0.8,因为通过composer下载最新的就是这个版本。Jsnpp框架也是通过composer下载的最新版本4.7.0版。

测试目标是数据库的读写性能,因为web应用里面对数据库的读写这块还是很重要的,所以这次测试就来测试两款框架的数据库处理性能。

测试框架:

Jsnpp 4.7.0 (官网:http://www.jsnpp.com/)

thinkphp 6.0.8 (官网:https://www.thinkphp.cn/)

测试目标:

对数据库单表的读写性能测试。

测试环境:

PHP7.1,MySQL

使用PHP7.1的原因在前一次测试中已经说过,本来打算使用PHP8.1,但是使用composer下载thinkphp6以后,没法在PHP8.1下运行,所以使用了PHP7来测试。

测试软件:ab软件

测试方式:这次依旧模拟一万访问,200并发的情况。

测试过程记录:

1、下载最新版:

首先使用composer分别下载最新版的Jsnpp和thinkphp,这里我在相同环境下分别建了文件夹来存放下载后的源码,Jsnpp框架放在“jsnpp”文件夹里面,thinkphp框架放在“tp6”文件夹里面。这步工作实际在前次测试中已经做了。

2、准备数据库:

由于是测试数据库的读写性能,所以事先要准备数据库,这里用的是MySQL数据库,先新建数据库以及数据库表,实际操作中,我直接使用了Jsnpp框架的代码来建库建表,因为懒得到数据库里面去弄。
我准备了一张数据库表,表名是“ceshi”,有三个字段,分别是“id”,“name”,“age”。

3、准备测试代码:

数据库准备好了,接下去就是准备测试代码了,由于要写数据库操作的代码,所以这次两个框架的代码都要改一下。

先来测试写数据,两款框架的代码分别如下:

Jsnpp:

namespace app\controller;

use jsnpp\Controller;

class Index extends Controller
{

    public function index()
    {
        $this->app->db->table('ceshi')->insert([
            'name' => 'Jack',
            'age' => 18
        ])->finish();
    }
}

thinkphp6:

namespace app\controller;

use app\BaseController;
use think\facade\Db;

class Index extends BaseController
{
    public function index()
    {
        Db::name('ceshi')->insert([
            'name' => 'Jack',
            'age' => 18
        ]);
    }

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }
}

上面两处代码都是向数据库表插入数据的代码,每进行一轮测试就会插入一万条记录,因为我是模拟一万访问的。

测试读数据的代码如下:

Jsnpp:

namespace app\controller;

use jsnpp\Controller;

class Index extends Controller
{

    public function index()
    {
        $this->app->db->table('ceshi')->where('id', '>', 90000)->where('id', '<', 90051)->select()->finish();
    }
}

thinkphp6:

namespace app\controller;

use app\BaseController;
use think\facade\Db;

class Index extends BaseController
{
    public function index()
    {
        Db::name('ceshi')->where('id', '>', 90000)->where('id', '<', 90051)->select();
    }

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }
}

?

读数据的测试,我先在数据库里面插入了十万条记录,然后读取其中的第90001到90050条数据,共50条记录。

4、进行测试:

测试依旧跟上次一样,模拟一万访问,200并发的情况,两个框架轮流测试,并且进行多轮测试。

先是写入数据库测试,结果如下:

Jsnpp:

Jsnpp框架每秒请求数基本维持在190左右。

thinkphp6:

thinkphp6框架每秒请求数不到50,这次测试数据是最好的一次,我后面的分析以50来说明。

然后我进行读取测试,结果如下:

Jsnpp:

Jsnpp框架每秒请求数基本维持在190以上。

thinkphp:

thinkphp6框架每秒请求数依然是50以下。

5、结论:

这次测试是很令我意外的,从上次测试的经验看,Jsnpp框架的性能可以在thinkphp6的性能基数上提升20%的性能,在测试前,我估计也就是提升20%左右,但是,看到数据后,直接令我惊呆了。

Jsnpp框架数据库的读写性能竟然达到了thinkphp6的3.8倍,190 / 50 = 3.8。

也就是说Jsnpp框架在数据库方面的表现是在thinkphp6性能基数上提升了280%,(190 - 50) / 50 = 2.8。

数据库的读写测试,应该更接近于实际运营,Jsnpp框架的实际性能远远超过了thinkphp6的性能,达到了3.8倍。

?

?

?

?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:20:15  更:2022-02-22 20:22:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:58:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码