django vs flask 负载性能测试对比,谁更快(二)读数据库

上文书对比了二者简单GET json的性能

网上有篇16年的对比文章说django ORM性能要比flask sqlalchemy差,我简单对比了一下读数据库的效率。

环境说明

  • flask 1.0.2,Flask-SQLAlchemy 2.4.0, SQLAlchemy 1.3.3,一个app文件,在wsl里gunicorn启动一个worker
  • django 2.2.1,sqlparse 0.3.0, 后面这个包是升级django时安装的依赖,不知道对orm速度提升有没有影响 初始化框架,在wsl里gunicorn启动一个worker
  • 数据库都是sqlite3,插入相同的数据,简单的表结构,3条数据
  • 测试在wsl里使用boom

flask代码

from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite3'

db = SQLAlchemy(app)


class Students(db.Model):
    id = db.Column('student_id', db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    city = db.Column(db.String(50))
    addr = db.Column(db.String(200))
    pin = db.Column(db.String(10))

    @property
    def serialize(self):
        return {'name': self.name,
                'city': self.city,
                'addr': self.addr,
                'pin': self.pin}

@app.route('/')
def index():

    return jsonify([i.serialize for i in Students.query.all()])


if __name__ == '__main__':
    # db.create_all()
    app.run()

flask测试结果

-------- Results --------
Successful calls		3415
Total time        		10.0033 s  
Average           		0.2858 s  
Fastest           		0.0513 s  
Slowest           		0.7572 s  
Amplitude         		0.7059 s  
Standard deviation		0.044420
RPS               		341
BSI              		Pretty good

-------- Status codes --------
Code 200          		3415 times.

django models代码

from django.db import models

class Students(models.Model):
    id = models.IntegerField('student_id', primary_key=True, auto_created=True)
    name = models.CharField(max_length=100)
    city = models.CharField(max_length=50)
    addr = models.CharField(max_length=200)
    pin = models.CharField(max_length=10)

    def to_dict(self):
        return {'name': self.name,
                'city': self.city,
                'addr': self.addr,
                'pin': self.pin}

django views代码

from django.http.response import JsonResponse
from .models import Students


def index(request):
    return JsonResponse([i.to_dict() for i in Students.objects.all()], safe=False)

django测试结果

-------- Results --------
Successful calls		3938
Total time        		10.0060 s  
Average           		0.2453 s  
Fastest           		0.0396 s  
Slowest           		0.7623 s  
Amplitude         		0.7228 s  
Standard deviation		0.044647
RPS               		393
BSI              		Pretty good

-------- Status codes --------
Code 200          		3938 times.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值