node省市区三级数据性能测评实例分析
本文实例讲述了node省市区三级数据性能测评。分享给大家供大家参考,具体如下:
闲来无事,测试下node和egg
首先是数据库,大概长这样
然后是代码
'usestrict';
constController=require('egg').Controller;
classHomeControllerextendsController{
asyncindex(){
const{ctx}=this;
ctx.body='hi,egg';
}
asynccity(){
const{ctx}=this;
console.time("sql")
constprovinces=awaitthis.app.mysql.select('provinces')
constcitys=awaitthis.app.mysql.select('cities')
constareas=awaitthis.app.mysql.select('areas')
console.timeEnd("sql")
console.time('cal')
provinces.forEach(province=>{
letprovinceid=province.provinceid
province.children=[]
citys.forEach(city=>{
city.children=[]
if(city.provinceid===provinceid){
province.children.push(city)
}
letcityid=city.cityid
areas.forEach(area=>{
if(area.cityid===cityid){
city.children.push(area)
}
})
})
})
console.timeEnd('cal')
constresult={
status:1,
data:provinces,
}
ctx.body=result;
}
}
module.exports=HomeController;
执行时间:
接着改进
'usestrict';
constController=require('egg').Controller;
classHomeControllerextendsController{
asyncindex(){
const{ctx}=this;
ctx.body='hi,egg';
}
asynccity(){
const{ctx}=this;
console.time("sql")
letprovinces=awaitthis.app.mysql.select('provinces')
letcitys=awaitthis.app.mysql.select('cities')
letareas=awaitthis.app.mysql.select('areas')
console.timeEnd("sql")
console.time('cal')
for(leti=0,len=citys.length;i{
letprovinceid=province.provinceid
province.children=[]
for(leti=0,len=citys.length;i
本次优化结果
可以看到,在组装数据的过程中,时间缩短了近20倍!
后续版本继续优化,也欢迎有相关方面经验的大神留言探讨,给出更好的方案。
希望本文所述对大家node.js程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。