0
点赞
收藏
分享

微信扫一扫

node省市区三级数据性能测评

闲来无事,测试下node和egg

首先是数据库,大概长这样

node省市区三级数据性能测评_i++

 

 

然后是代码

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'hi, egg';
}

async city() {
const { ctx } = this;
console.time("sql")
const provinces = await this.app.mysql.select('provinces')
const citys = await this.app.mysql.select('cities')
const areas = await this.app.mysql.select('areas')
console.timeEnd("sql")
console.time('cal')
provinces.forEach(province => {
let provinceid = province.provinceid
province.children = []
citys.forEach(city => {
city.children = []
if (city.provinceid === provinceid) {
province.children.push(city)
}
let cityid = city.cityid
areas.forEach(area => {
if (area.cityid === cityid) {
city.children.push(area)
}
})
})
})
console.timeEnd('cal')
const result = {
status: 1,
data: provinces,
}

ctx.body = result;
}
}

module.exports = HomeController;

 

执行时间:

 

node省市区三级数据性能测评_mysql_02

 

 

接着改进

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'hi, egg';
}

async city() {
const { ctx } = this;
console.time("sql")
let provinces = await this.app.mysql.select('provinces')
let citys = await this.app.mysql.select('cities')
let areas = await this.app.mysql.select('areas')
console.timeEnd("sql")
console.time('cal')
for (let i = 0, len = citys.length; i < len; i++) {
let city = citys[i]
city.children = []
let cityid = city.cityid
for (let j = 0, len1 = areas.length; j < len1; j++) {
let area = areas[j]
if (area.cityid === cityid) {
city.children.push(areas.splice(j, 1)[0])
len1--
j--
}
}
}
provinces.forEach(province => {
let provinceid = province.provinceid
province.children = []
for (let i = 0, len = citys.length; i < len; i++) {
let city = citys[i]
if (city.provinceid === provinceid) {
province.children.push(city)
citys.splice(i, 1)
len--
i--
}
}
})
console.timeEnd('cal')
const result = {
status: 1,
data: provinces,
}

ctx.body = result;
}
}

module.exports = HomeController;

本次优化结果

node省市区三级数据性能测评_mysql_03

 

 可以看到,在组装数据的过程中,时间缩短了近20倍!

node省市区三级数据性能测评_mysql_04

 

 

后续版本继续优化,也欢迎有相关方面经验的大神留言探讨,给出更好的方案。

 


 



举报

相关推荐

0 条评论