await 性能猜想

栏目: 服务器 · Nginx · 发布时间: 8年前

内容简介:await 性能猜想

前言

以往我们推崇异步 I/O 来实现高并发下的高性能,如今 NodeJS 步入 8.x 时代,async await 可以用同步的写法来实现异步处理,不知道对性能是否会有影响,来做个简单的测试。

测试基准

Linode 1G 配置两台,一台用 ab 发请求,另一台跑4个测试用例。

先用 Nginx 跑一个默认服务,返回一个 html 文件,测试基准性能。

await 性能猜想

Nginx 访问默认的 html 文件,QPS 为 5162

同步访问文件

fs.readFileSync 是 fs.readFile 的同步版本

const fs = require('fs')
const http = require('http')
 
let server = http.createServer()
 
server.on('request', (req, res) => {
 
  let file = fs.readFileSync('./index.html')
 
  res.write(file)
  res.end()
 
})
 
server.listen(3000)

测试结果

await 性能猜想

QPS 为 3195

异步访问文件

const fs = require('fs')
const http = require('http')
 
let server = http.createServer()
 
server.on('request', (req, res) => {
 
  fs.readFile('./index.html', (err, data) => {
 
    if (err) {
      res.statusCode = 500
      res.end()
      return
    }
 
    res.write(data)
    res.end()
 
  })
 
})
 
server.listen(3001)

测试结果

await 性能猜想

QPS 为 2945

使用 async 来封装异步操作

const fs = require('fs')
const http = require('http')
 
let server = http.createServer()
 
server.on('request', onRequest)
 
async function onRequest(req, res) {
 
  let file = await readFile()
 
  res.write(file)
  res.end()
 
}
 
function readFile () {
  return new Promise((resolve, reject) => {
 
    fs.readFile('./index.html', (err, data) => {
      if (err) reject(err)
 
      resolve(data)
    })
 
  })
}
 
server.listen(3002)

测试结果

await 性能猜想

QPS 为 2855

对比

  • 5162 Nginx
    • -1967
  • 3195 fs.readFileSync
    • -250
  • 2945 fs.readFile
    • -90
  • 2855 await promise fs.readFile

本来猜测的结果,应该是 Nginx >  fs.readFile > fs.readFIleSync > await + promise + fs.readFile

实际结果却是 Nginx > fs.readFileSync > fs.readFile > await + promise + fs.readFile,这下傻眼


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码