`
superisaac
  • 浏览: 64645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nodejs 的stack于setTimeout

阅读更多
node 可以通过v8 option --stack_size 设置分配的栈大小,缺省的大小是1024K字节(man node 时单位显示为KkBytes,不知道这是神马单位还是typo?)。

由于javascript没有尾递归优化,又是异步IO, 对于sequence调用有可能会造成栈溢出。可以采用setTimeout来规避这种风险, 但是setTimeout的性能如何呢?

我做的简单代码如下
function a(i) {
    if(i <= 0) {
        process.exit();
    }
    setTimeout(function () {
            a(i - 1);
        }, 0);
}
a(1000000);


在我的破11寸 macbook air上执行100w次setTimeout时间花费

real 0m10.449s
user 0m8.562s
sys 0m1.860s

大约每秒可以保证10w次,基本能满足服务器的要求,但是作为对比的直接函数调用在无栈溢出的条件下,可以轻松达到每秒1000w次。
分享到:
评论

相关推荐

    men-stack:使用MongoDB,Express和Nodejs Stack的简单教程

    简单的MEN堆栈2021-03年修改后续教程: : MongoDB安装MacOSX(arm64) 通过brew获取并安装mongodb brew tap mongodb/brew...brew install mongodb-community@4.4 启动mongodb服务: brew services start mongodb-...

    nodejs.pdf nodejs初级教程 nodejs初级教程

    nodejs初级教程

    nodejs14.9.0

    nodejs14.9.0

    NodeJS中文文档精编.pdf 全文免费

    另外,console、setTimeout() 和 setInterval() 也可以使用。 NodeJS 的使用非常广泛,例如可以用来编写服务器端代码、构建 Web 应用程序、开发桌面应用程序等。 模块化是 NodeJS 的一个重要特点。模块化可以将大...

    快速掌握Node.js中setTimeout和setInterval的使用方法

    今天先学下setTimeout和setInterval的使用。 一、setTimeout超时计时器(和GCD中的after类似) 在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法。当调用setTime()时回调函数会在...

    NodeJS学习笔记和代码

    3. **V8引擎**:NodeJS的高性能得益于Google的V8引擎,它可以将JavaScript代码编译为机器码,实现快速执行。 4. **文件系统操作**:NodeJS提供了丰富的文件系统API,如`fs.readFile`、`fs.writeFile`等,用于读写...

    NodeJsStack:测试

    NodeJsStack 使用Express.js的NodeJs应用程序...如果由于某些原因要更改端口,请打开/ stack / bin / www并更改端口号。 #使用技术:NodeJs,Express.js,Handlebars.js,Bootstrap,npm,MySQL,phpmyadmin, 演示

    NodeJS-FullStack:我的工作档案

    NODEJS-全栈我在此存储库中包含与NodeJS一起使用的FullStack文件。章节标题对象与功能下一代:ES6 / ES7 + Javascript模块异步编程和AJAX 节点JS NPM ExpressJS的模板引擎:PUG 处理数据:MVC SQL数据库:MYSQL SQL ...

    nodejs:NodeJS示例项目

    节点js NodeJS示例项目

    NodeJS整理手册文档

    3. Socket.IO:实现实时通信,支持WebSocket,广泛应用于实时应用如聊天、游戏等。 4. Promise和async/await:处理异步操作,提升代码可读性和可维护性。 四、NodeJS实战案例 - Web服务器:使用NodeJS创建一个简单...

    NodeJS开发指南_nodejs开发指南_

    NodeJS是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,打破了JavaScript只能在浏览器中运行的传统。本指南将深入探讨NodeJS的核心概念、开发工具、模块系统、网络编程...

    Idea 配置前端web nodejs项目

    Idea 配置前端 Web Nodejs 项目 Idea 配置前端 Web Nodejs 项目是指在 IntelliJ IDEA 集成开发环境中配置 Nodejs 项目的步骤。下面我们将详细讲解配置的步骤和相关知识点。 Idea 配置 Nodejs 项目 首先,我们需要...

    NodeJs技术经典文档

    资源名称:NodeJs技术经典文档资源目录:【】Node.js开发指南_中文正版【】nodejs开发指南pdf及源码及win安装程序【】nodejs手册中文【】NodeJs教程【】umav4simple【】七天学会NodeJS【】七天学会NodeJS【】深入浅...

    NodeJS示例

    下载适用于 Windows 的安装包。通常推荐下载 LTS(长期支持)版本,因为这个版本更加稳定,适合生产环境。 2. 安装过程中,你可以选择自定义安装路径,例如 `C:\Program Files\nodejs`。默认情况下,安装程序会自动...

    nodejs视频教程百度网盘

    nodejs视频教程,可以快速帮助你入门nodejs开发中,nodejs不错哦

    NodeJS 安装包

    NodeJS 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的流行。NodeJS 的设计思想是事件驱动、非阻塞 I/O 模型,这使得它在处理高并发...

    liunx nodejs+nginx配置收藏版

    liunx nodejs+nginx配置收藏版liunx nodejs+nginx配置收藏版

    nodejs11.zip

    nodejs11安装文件,解决win7操作系统nodeJs环境搭建失败问题:Node.js is only supported on Windows 8.1, Windows Server 2012 R2, or higher

    nodeJS学习笔记.html

    nodejs 学习笔记 nodejs 学习笔记 nodejs 学习笔记

    NodeJs思维导图总结

    NodeJs思维导图总结

Global site tag (gtag.js) - Google Analytics