如何使这个 nodejs api 快速完成 CPU 密集型任务

我试图证明 Nodejs 不适合 CPU 密集型任务。 在此代码中,我创建了接受 baseNumber 的异步函数 mySlowFunction。 当我使用查询参数 12 命中 http://localhost:8080 时,需要 5 秒。 如果对查询参数 11、89、23、12、23 向此 api 发出 5 个后续请求,该怎么办?会很慢。 在这种情况下,使用 NodeJs 真的好吗?[即 CPU 密集型任务]。如果是,那么我怎样才能做到这一点?

async function mySlowFunction(baseNumber) {
  let result = 0; 
  for (var i = Math.pow(baseNumber,7); i >= 0; i--) {    
    result += Math.atan(i) * Math.tan(i);
  };
  return result;
}
const express = require('express');
const cookieparser = require('cookie-parser');
const csrf = require('csurf');
const dotenv = require("dotenv").config();
const app = express();
app.use(express.urlencoded({extended:true}));
app.use(express.json());
app.use(cookieparser());
app.get("/",async(req,res)=>{
    let data = await mySlowFunction(req.query.base);
    res.json({data})
})

app.listen(process.env.PORT,() => {
  console.log(`Listening on http://localhost:${process.env.PORT}`);
});


pll0712 回答:如何使这个 nodejs api 快速完成 CPU 密集型任务

我有一个非常笼统的答案。

  1. 如果查询参数有限,您可以预先计算结果。 您可以将结果存储在文件中或数据库查询它们。

  2. 您可以缓存结果。 如果db中查询参数没有结果,则计算并保存到db中。

本文链接:https://www.f2er.com/3041.html

大家都在问