Crypto

Nodejs๋Š” Single Thread๊ฐ€ ์•„๋‹ˆ๋‹ค.

์œ ์ €๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•œ ์˜์—ญ์—์„œ Single thread๋ผ๊ณ  ๋ด๋„ ๋ ๋“ฏํ•œ๋‹ค.

crypto.pbkdf2๋Š” ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ์—์„œ ์ž‘๋™ํ•œ๋‹ค.

const crypto = require('crypto');

const startDate = Date.now();
crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 1 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 2 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 3 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 4 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 5 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 6 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 7 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 8 : ', Date.now() - startDate);
});

crypto.pbkdf2('bugtype', 'javascript', 100000, 512, 'sha512', () => {
  console.log('JOB 9 : ', Date.now() - startDate);
});
// ๊ฒฐ๊ณผ ( ํ•„์ž๋Š” ์ฟผ๋“œ์ฝ”์–ด )
JOB 2 :  542
JOB 4 :  548
JOB 3 :  549
JOB 1 :  552
// ๋‹ค์Œ ์ž‘์—…
JOB 7 :  1077
JOB 5 :  1077
JOB 8 :  1077
JOB 6 :  1079
// ๋‹ค์Œ ์ž‘์—…
JOB 9 :  1584

ํ•„์ž๋Š” ์ฟผ๋“œ์ฝ”์–ด์˜ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ 4๊ฐœ์”ฉ ์ž‘์—…์ด ๋œ๋‹ค.

CPU๋‹น ํ•˜๋‚˜์˜ Thread๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด Thread์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์„๊นŒ?

process.env.UV_THREADPOOL_SIZE = 8; //  ์ œ์ผ ์œ„์— ์„ ์–ธ

์œ„์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์ค˜์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

JOB 1 :  1222
JOB 7 :  1245
JOB 2 :  1247
JOB 3 :  1253
JOB 6 :  1255
JOB 4 :  1262
JOB 8 :  1265
JOB 5 :  1270
// ๋‹ค์Œ ์ž‘์—…
JOB 9 :  1747

๊ฒฐ๊ณผ๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, 1~4๋ฒˆ์˜ ์ž‘์—…์ด ์ฒ˜์Œ๋ณด๋‹ค 2๋ฐฐ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.

์™œ๋ƒ๋ฉด ํ•˜๋‚˜์˜ CPU์—์„œ 2๊ฐœ์˜ Thread๊ฐ€ ๋™์‹œ์— ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ๋ž˜์„œ 2๋ฐฐ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Œ€์‹  1~8๋ฒˆ์˜ ์ž‘์—…์€ ๋™์‹œ์— ๋๋‚˜๊ฒŒ ๋œ๋‹ค.

Last updated

Was this helpful?