๊ด€๋ฆฌ ๋ฉ”๋‰ด

Bin's Blog

์ฝœ๋ฐฑ ์ง€์˜ฅ(๊ธฐ๋ช… ํ•จ์ˆ˜) ๋ณธ๋ฌธ

JavaScript

์ฝœ๋ฐฑ ์ง€์˜ฅ(๊ธฐ๋ช… ํ•จ์ˆ˜)

hotIce 2023. 6. 27. 09:58
728x90

๐Ÿค” ์ฝœ๋ฐฑ ์ง€์˜ฅ์ด๋ž€?

๐Ÿ‘‰ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค

๐Ÿ‘‰ ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น์‚ฌ์ดํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ž‘์—…์ด ์žˆ์„ ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ง„ ํ›„์— ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๋Ÿฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์ค‘์ฒฉ๋˜์–ด ์‚ฌ์šฉ๋˜๋ฉด, ์ฆ‰ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ฝœ๋ฐฑ ์ง€์˜ฅ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€?(์ง€๋‚œ ํฌ์ŠคํŒ… ์ฐธ๊ณ )

 

์ฝœ๋ฐฑ ํ•จ์ˆ˜

๐Ÿง ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€? ๐Ÿ‘‰ ์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ์ฝ”๋“œ์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ๋ฐ›์€ ์ฝ”๋“œ๋Š” ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ•„์š”์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์‹œ์ ์— ์‹คํ–‰ํ•œ๋‹ค. ๐Ÿ‘‰ ์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž, ๋‚ด๊ฐ€ ์ข‹์•„

hobin49.tistory.com

 

๐Ÿ‘‰ ๋น„๋™๊ธฐ๋Š” ๋™๊ธฐ์˜ ๋ฐ˜๋Œ€๋ง์ด๋‹ค. ๋™๊ธฐ์ ์ธ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—์•ผ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๋น„๋™๊ธฐ๋Š” ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ์˜ ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ฆ‰์‹œ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. 

๐Ÿ‘‰ CPU์˜ ๊ณ„์‚ฐ์— ์˜ํ•ด ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ(๋ณ€์ˆ˜ ํ• ๋‹น, ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋“ฑ)๋Š” ๋™๊ธฐ์ ์ธ ์ฝ”๋“œ์ด๋‹ค. 

๐Ÿ‘‰ ๋ฐ˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ์˜ํ•ด ํŠน์ • ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผ๋˜๊ธฐ ์ „๊นŒ์ง€ ์–ด๋–ค ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ ๋ณด๋ฅ˜ํ•œ๋‹ค๊ฑฐ๋‚˜(setTimeout), ์‚ฌ์šฉ์ž์˜ ์ง์ ‘์ ์ธ ๊ฐœ์ž…์ด ์žˆ์„ ๋•Œ ๋น„๋กœ์†Œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋Œ€๊ธฐํ•œ๋‹ค๊ฑฐ๋‚˜(addEventListener), ์›น๋ธŒ๋ผ์šฐ์ € ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋ณ„๋„์˜ ๋Œ€์ƒ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์™”์„ ๋•Œ ๋น„๋กœ์†Œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋Œ€๊ธฐํ•˜๋Š” ๋“ฑ(XMLHttpRequest)

๐Ÿ‘‰ ๋ณ„๋„์˜ ์š”์ฒญ, ์‹คํ–‰ ๋Œ€๊ธฐ, ๋ณด๋ฅ˜ ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋Š” ๋น„๋™๊ธฐ์ ์ธ ์ฝ”๋“œ์ด๋‹ค. 

 

๐Ÿ‘‰ ์ฝœ๋ฐฑ ์ง€์˜ฅ ์˜ˆ์‹œ

setTimeout((name) => {
    let coffeeList = name;
    console.log(coffeeList);
    
    setTimeout((name) => {
       coffeeList += ', ' + name;
       console.log(coffeeList);
       
       setTimeout((name) => {
           coffeeList += ', ' + name;
           console.log(coffeeList);
           
           setTimeout((name) => {
              coffeeList += ', ' + name;
              console.log(coffeeList);
  
           }, 500, "์นดํŽ˜๋ผ๋–ผ"); 
       
       }, 500, "์นดํŽ˜๋ชจ์นด");
    
    }, 500, "์•„๋ฉ”๋ฆฌ์นด๋…ธ");

}, 500, "์—์Šคํ”„๋ ˆ์†Œ");

//์‹คํ–‰ ๊ฒฐ๊ณผ
// ์—์Šคํ”„๋ ˆ์†Œ
// ์—์Šคํ”„๋ ˆ์†Œ, ์•„๋ฉ”๋ฆฌ์นด๋…ธ
// ์—์Šคํ”„๋ ˆ์†Œ, ์•„๋ฉ”๋ฆฌ์นด๋…ธ, ์นดํŽ˜๋ชจ์นด
// ์—์Šคํ”„๋ ˆ์†Œ, ์•„๋ฉ”๋ฆฌ์นด๋…ธ, ์นดํŽ˜๋ชจ์นด, ์นดํŽ˜๋ผ๋–ผ

๐Ÿ‘‰ ์˜ˆ์ œ 4-12๋Š” 0.5์ดˆ ์ฃผ๊ธฐ๋งˆ๋‹ค ์ปคํ”ผ ๋ชฉ๋ก์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ ์ฝœ๋ฐฑ์€ ์ปคํ”ผ ์ด๋ฆ„์„ ์ „๋‹ฌํ•˜๊ณ  ๋ชฉ๋ก์— ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ชฉ์  ๋‹ฌ์„ฑ์—๋Š” ์ง€์žฅ์ด ์—†์ง€๋งŒ ๊ณผ๋„ํ•œ ๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ๊ฐ’์ด ์ „๋‹ฌ๋˜๋Š” ์ˆœ์„œ๊ฐ€ ์•„๋ž˜์—์„œ ์œ„๋กœ ํ–ฅํ•˜๊ณ  ์žˆ์–ด ์–ด์ƒ‰ํ•˜๊ฒŒ ๋Š๊ปด์ง„๋‹ค. 

 

๐Ÿ‘‰ ์ฝœ๋ฐฑ ์ง€์˜ฅ ํ•ด๊ฒฐ(์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋กœ ์ „ํ™˜)

let coffeeList = "";

const addEspresso = (name) => {
   coffeeList = name;
   console.log(coffeeList);
   setTimeout(addAmericano, 500, "์•„๋ฉ”๋ฆฌ์นด๋…ธ");
};

const addAmericano = (name) => {
   coffeeList += ", " + name;
   coffeeList = name;
   console.log(coffeeList);
   setTimeout(addMocha, 500, "์นดํŽ˜๋ชจ์นด");
};

const addMocha = (name) => {
   coffeeList += ", " + name;
   coffeeList = name;
   console.log(coffeeList);
   setTimeout(addLatte, 500, "์นดํŽ˜๋ผ๋–ผ");
};

const addLatte = (name) => {
   coffeeList += ", " + name;
   coffeeList = name;
   console.log(coffeeList);
};

setTimeout(addEspresso, 500, "์—์Šคํ”„๋ ˆ์†Œ");


// ์‹คํ–‰๊ฒฐ๊ณผ
// ์—์Šคํ”„๋ ˆ์†Œ
// ์•„๋ฉ”๋ฆฌ์นด๋…ธ
// ์นดํŽ˜๋ชจ์นด
// ์นดํŽ˜๋ผ๋–ผ

๐Ÿ‘‰ ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๊ฐ€๋…์„ฑ์„ ๋†’์ผ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋งŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์–ด๋‚ด๋ ค๊ฐ€๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์—†๋‹ค. 

๐Ÿ‘‰ ๊ทธ๋Ÿฌ๋‚˜ ์ผํšŒ์„ฑ ํ•จ์ˆ˜๋ฅผ ์ „๋ถ€ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋„ ์ข€ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ๋”์šฑ ๋‚˜์€ ์žฅ์น˜์ธ promise, async/await์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ๋‹ค. 

728x90

'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

XML  (0) 2023.07.31
ํ”„๋กœํ† ํƒ€์ž…  (0) 2023.07.15
์ฝœ๋ฐฑ ํ•จ์ˆ˜  (0) 2023.06.21
forEach ๋ฉ”์„œ๋“œ  (0) 2023.06.02
concat ๋ฉ”์„œ๋“œ  (0) 2023.06.01