node省市区三级数据性能测评实例分析
更新时间:2019年11月06日 10:01:24 作者:苍青浪
这篇文章主要介绍了node省市区三级数据性能,结合具体实例形式评测分析了node省市区三级数据的实现、改进方法与运行效率,需要的朋友可以参考下
本文实例讲述了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程序设计有所帮助。
您可能感兴趣的文章:
相关文章
使用Express+Node.js对mysql进行增改查操作
这篇文章主要介绍了使用Express+Node.js对mysql进行增改查操作,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-08-08基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
关于前后端分享的思考,我们已经有五篇文章阐述思路与设计。本文介绍淘宝网收藏夹将 Node.js 引入传统技术栈的具体实践。2014-09-09解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
这篇文章主要介绍了解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306报错的相关资料,文中将问题描述的很清楚,解决的方法也介绍的很完整,需要的朋友可以参考借鉴,下面来一起看看吧。2017-03-03
最新评论