您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
本文实例讲述了node省市区三级数据性能测评。分享给大家供大家参考,具体如下:
闲来无事,测试下node和egg
首先是数据库,大概长这样
然后是代码
'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;
执行时间:
接着改进
'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;
本次优化结果
可以看到,在组装数据的过程中,时间缩短了近20倍!
后续版本继续优化,也欢迎有相关方面经验的大神留言探讨,给出更好的方案。
希望本文所述对大家node.js程序设计有所帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。