•
•
•
•
•
•
const crypto = require('crypto');
const NUM_REQUESTS = 2;
for (let i = 0; i < NUM_REQUESTS; i++) {
crypto.pbkdf2Sync('secret', 'salt', 10000, 512, 'sha512');
}
0 50 100 150 200 250 300 350 400
Time (milliseconds)
Execution Timeline
const crypto = require('crypto');
const NUM_REQUESTS = 2;
for (let i = 0; i < NUM_REQUESTS; i++) {
crypto.pbkdf2('secret', 'salt', 10000, 512, 'sha512', () => {});
}
0 50 100 150 200 250 300 350 400
Time (milliseconds)
Execution Timeline
0 50 100 150 200 250 300 350 400
Time (milliseconds)
Execution Timeline
0 50 100 150 200 250 300 350 400
Time (milliseconds)
Execution Timeline
0 50 100 150 200 250 300 350 400
Time (milliseconds)
Execution Timeline
2 Requests
4 Requests
6 Requests
const https = require('https');
const NUM_REQUESTS = 2;
for (let i = 0; i < NUM_REQUESTS; ++i) {
https.request('https://nebri.us/static/me.jpg', (res) => {
res.on('data', () => {});
res.on('end', () => {});
}).end();
}
0 100 200 300 400 500 600 700 800
Time (milliseconds)
Execution Timeline
0 100 200 300 400 500 600 700 800
Time (milliseconds)
Execution Timeline
0 100 200 300 400 500 600 700 800
Time (milliseconds)
Execution Timeline
•
•
•
•
•
•
•
•
•
•
•
•
•
Bryan Hughes, @nebrius

The Node.js Event Loop: Not So Single Threaded

  • 7.
  • 13.
    const crypto =require('crypto'); const NUM_REQUESTS = 2; for (let i = 0; i < NUM_REQUESTS; i++) { crypto.pbkdf2Sync('secret', 'salt', 10000, 512, 'sha512'); }
  • 14.
    0 50 100150 200 250 300 350 400 Time (milliseconds) Execution Timeline
  • 15.
    const crypto =require('crypto'); const NUM_REQUESTS = 2; for (let i = 0; i < NUM_REQUESTS; i++) { crypto.pbkdf2('secret', 'salt', 10000, 512, 'sha512', () => {}); }
  • 16.
    0 50 100150 200 250 300 350 400 Time (milliseconds) Execution Timeline
  • 17.
    0 50 100150 200 250 300 350 400 Time (milliseconds) Execution Timeline
  • 18.
    0 50 100150 200 250 300 350 400 Time (milliseconds) Execution Timeline
  • 19.
    0 50 100150 200 250 300 350 400 Time (milliseconds) Execution Timeline 2 Requests 4 Requests 6 Requests
  • 22.
    const https =require('https'); const NUM_REQUESTS = 2; for (let i = 0; i < NUM_REQUESTS; ++i) { https.request('https://nebri.us/static/me.jpg', (res) => { res.on('data', () => {}); res.on('end', () => {}); }).end(); }
  • 23.
    0 100 200300 400 500 600 700 800 Time (milliseconds) Execution Timeline
  • 24.
    0 100 200300 400 500 600 700 800 Time (milliseconds) Execution Timeline
  • 25.
    0 100 200300 400 500 600 700 800 Time (milliseconds) Execution Timeline
  • 29.
  • 30.