[Node.js] Use nodejs-dashboard event loop delay with hrtime()

In this lesson, you will learn how to use the Formidable nodejs-dashboard event loop delay to identify expensive operations in your code. An example application with excessive synchronous file system write operations is used as well as the provided jmeter configuration to simulate load.

‘use strict‘;

let express = require(‘express‘);
let router = express.Router();
let faker = require(‘faker‘);
let fs = require(‘fs‘);

let clock = (start) => {
    if(!start) return process.hrtime();
    let end = process.hrtime(start);
    return Math.round((end[0]*1000) + (end[1]/1000000));
}

router.get(‘/‘, function(req, res, next) {
    let start = clock();
    let num = Math.floor(Math.random() * 1000) + 1;
    let searchterm = faker.lorem.words(num);
    let arr = searchterm.split(‘ ‘);
    let fsStart = clock();
    arr.forEach(word => {
        fs.writeFileSync(‘lorem.txt‘, word);
    });
    let fsDuration = clock(fsStart);
    console.log(`Generating ${num} words`);
    res.send(searchterm);
    let duration = clock(start);
    console.error(`router.get / took ${duration}, fs write took ${fsDuration}`);
});

module.exports = router;
时间: 2024-07-30 13:47:49

[Node.js] Use nodejs-dashboard event loop delay with hrtime()的相关文章

Node.js(一)——NodeJs基础

一.概念 node.js采用Google Chrome浏览器规范引擎 由C++语言编写的.本质上是一个JavaScript的运行环境 nodejs 不仅仅能解析js代码而且没有浏览器端各种安全的级别限制 还提供一些系统级别的API,比如: 1.文件的读写 2.进程的管理 3.网络的通信 09年面世以来一直很火 其次它很强,借助于NodeJs所能完成的事情,当然不仅仅与此 Node-Webkit appjs 相似的应用:允许开发者使用web技术,也就是html/css/js来开发跨平台的.桌面的应

从一个例子引发对JS运行机制之 Event Loop 的思考

栗子如下: for (var i = 0; i < 5; i++) { setTimeout(function() { console.log('i: ',i); //一秒之后输出几乎没有时间间隔依次输出5个5 }, 1000); } console.log(i); //立即输出5 想必很多人看到立马能看出答案吧,但是为什么定时器不能依次打印出1,2,3,4,5呢?答案稍后分晓. 那到底怎么才能依次输出我们想要的结果呢?大家可能都想到是利用闭包,或者是利ES6中的let声明,但是今天我们不讲这个

理解Nodejs的Event Loop

Node的"event loop"主要是用来处理高输出量的.这很神奇,这也是为什么node可以在单线程的情况下同时处理很多的后台操作.本文就会集中讲述event loop是怎么运行的,这样你可以可以使用这个神奇的东西完成你自己的工作. 事件驱动的编程(event-driven programming) 要理解event loop首先需要了解的就是event driven programming(事件驱动的编程).这个在1960年代就已经被人们所熟知.如今,event-driven pr

js单线程的本质-------Event Loop

怎么判断是浏览器还是node环境? node中window是未定义:setImmediate是定义的,在浏览器中未定义 timer阶段:这个阶段会执行setTimeout和setInterval check阶段:执行setImmediate macro task [task] 宏任务 :script(页面代码).setTimeout.setInterval.I/O事件.UI交互事件(点击事件) micro  task [job] 微任务: Promise.process.nextTick.Pro

Node.js(十)——NodeJs事件

NodeJs的事件模块 在爬虫代码中有个on('data')事件,为什么响应的res回有一个on方法呢,那这个on做什么事情呢,要回答这些问题,要从事件模块说起,在NodeJs中不存在浏览器中的冒泡.捕获这些行为的,所以NodeJs中实现的events这个模块,里面的大多数模块都集成了这个模块, 所以events是最重要的一个模块,它只对外暴露了一个对象,就是eventImit,作用有两个分别是事件的发射,和事件的监听,两个不同的执行环节本来是毫无联系的,但是有了事件模块的支持以后,这两个环节就

Node.js开发 ---- nodejs操作mysql

app.js[html] view plain copy//初始化包 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parse

Node.js异步处理CPU密集型任务

Node.js擅长数据密集型实时(data-intensive real-time)交互的应用场景.然而数据密集型实时应用程序并不是只有I/O密集型任务,当碰到CPU密集型任务时,比如要对数据加解密(node.bcrypt.js),数据压缩和解压(node-tar),或者要根据用户的身份对图片做些个性化处理,在这些场景下,主线程致力于做复杂的CPU计算,IO请求队列中的任务就被阻塞. Node.js主线程的event loop在处理所有的任务/事件时,都是沿着事件队列顺序执行的,所以在其中任何一

转:Node.js异步处理CPU密集型任务的新思路

原文来自于:http://www.infoq.com/cn/articles/new-idea-of-nodejs-asynchronous-processing-tasks?utm_source=infoq&utm_medium=popular_links_homepage Node.js擅长数据密集型实时(data-intensive real-time)交互的应用场景.然而数据密集型实时应用程序并不是只有I/O密集型任务,当碰到CPU密集型任务时,比如要对数据加解密(node.bcrypt

node.js的总结-可以应付bat的社招面试

什么是NodeJS Node.js采用模块化结构,按照CommonJS规范定义和使用模块.模块与文件是一一对应关系,即加载一个模块,实际上就是加载对应的一个模块文件. JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM