最新消息: 新版網站上線了?。?!
  • 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程序設計有所幫助。

    .....

    轉載請注明:谷谷點程序 » node省市區三級數據性能測評實例分析

    平度胜利路按摩在什么地方多,平度做大活的足疗,平度职教中心女孩微信,平度找曼地方