Stream
์คํธ๋ฆผ(Stream)์ ๋ํด์ ์ค๋ช
ํด ์ฃผ์ธ์.
์๋ฐ์์๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค.
์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฐ๋ณต๋ฌธ์ด๋ ๋ฐ๋ณต์(
iterator)๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๋ฒ ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.์ด๋ฌํ ๋ฌธ์ ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด Java 8 ๋ถํฐ ์คํธ๋ฆผ API๋ฅผ ๋์ ํ๋ค.
์คํธ๋ฆผ API๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํํ์ฌ ๋ค๋ฃจ๋ฏ๋ก, ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ์ํ ๊ณตํต๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
๋ฐ๋ผ์ ์คํธ๋ฆผ API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ๋ฟ๋ง ์๋๋ผ ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ค.
์คํธ๋ฆผ API ํน์ง
์คํธ๋ฆผ์ ์ธ๋ถ ๋ฐ๋ณต์ ํตํด ์์ ํ๋ ์ปฌ๋ ์ ๊ณผ๋ ๋ฌ๋ฆฌ ๋ด๋ถ ๋ฐ๋ณต์ ํตํด ์์ ์ ์ํํ๋ค.
์คํธ๋ฆผ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ปฌ๋ ์ ๊ณผ๋ ๋ฌ๋ฆฌ ๋จ ํ ๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ค.
์คํธ๋ฆผ์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์คํธ๋ฆผ์ ์ฐ์ฐ์ ํํฐ-๋งต(
filter-map) ๊ธฐ๋ฐ์ API๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ฐ(lazy) ์ฐ์ฐ์ ํตํด ์ฑ๋ฅ์ ์ต์ ํํ๋ค.์คํธ๋ฆผ์
parallelStream()๋ฉ์๋๋ฅผ ํตํด ์์ฌ์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.์คํ ๋ฐฉ์ & ์ธ๋ฐ์ฑ์ ๋นํจ์จ์ ์ ๊ฑฐํ ์ ์๋ ๊ธฐ๋ณธํ ์คํธ๋ฆผ์ ์ ๊ณตํ๋ค.(
IntStream,LongStream๋ฑ)
์คํธ๋ฆผ API ๋์ ํ๋ฆ
์คํธ๋ฆผ ์์ฑ
Collections.stream(),Arrays.stream(),Stream.of(),Stream.iterate(),Stream.generate()๋ฑ์ผ๋ก ์์ฑ ๊ฐ๋ฅ
์คํธ๋ฆผ ์ค๊ฐ ์ฐ์ฐ(์คํธ๋ฆผ์ ๋ณํ)
์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ ์คํธ๋ฆผ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ์๋ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ๋ง๋ค ์ ์๋ค.(์ฌ๋ฌ ๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ)
์คํธ๋ฆผ์ ์ค๊ฐ ์ฐ์ฐ์ ๋์ ํ๊ณ , ์ต์ข ์ฐ์ฐ์ด ํธ์ถ๋ ๋ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์(
lazy) ์ฑ๋ฅ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ํฅ์์ํฌ ์ ์๋ค.filter(),distinct(),map(),limit(),skip(),sorted(),peek()๋ฑ์ด ์๋ค.
์คํธ๋ฆผ ์ต์ข ์ฐ์ฐ(์คํธ๋ฆผ์ ์ฌ์ฉ)
์ค๊ฐ ์ฐ์ฐ์ ํตํด ๋ณํ๋ ์คํธ๋ฆผ์ ๋ง์ง๋ง์ผ๋ก ์ต์ข ์ฐ์ฐ์ ํตํด ๊ฐ ์์๋ฅผ ์๋ชจํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ํ๋ค.(1๋ฒ๋ง ์คํ ๊ฐ๋ฅ)
์ฆ, ์ง์ฐ(
lazy) ๋์๋ ๋ชจ๋ ์ค๊ฐ ์ฐ์ฐ๋ค์ด ์ต์ข ์ฐ์ฐ ์์ ๋ชจ๋ ์ํ๋๋ ๊ฒ์ด๋ค.์ด๋ ๊ฒ ์ต์ข ์ฐ์ฐ ์์ ๋ชจ๋ ์์๋ฅผ ์๋ชจํ ํด๋น ์คํธ๋ฆผ์ ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.(์ผํ์ฉ)
forEach(),reduce(),findFirst(),anyMatch(),count(),max(),sum(),collect()๋ฑ์ด ์๋ค.

์คํธ๋ฆผ API ์ฅ๋จ์
[์ฅ์ ]
๊ฐ๊ฒฐํ ์ฝ๋
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํด ๊ฐ๋ ์ฑ๋ ๋์ผ ์ ์๋ค.
๋ณ๋ ฌ ์ฒ๋ฆฌ ์ง์
๋ด๋ถ์ ์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ฏ๋ก ๋ฉํฐ์ฝ์ด ์์คํ ์์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
์ถ์ํ
์คํธ๋ฆผ์ ๋ค์ํ ๋ฐ์ดํฐ ์์ค์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ ๊ณตํต ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๋ ์ธ๋ถ ์ฌํญ์ ๋ชฐ๋ผ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋ค.
์ฑ๋ฅ ์ต์ ํ
์คํธ๋ฆผ์ ์ง์ฐ ์ฐ์ฐ์ ํตํด ํ์ํ ์์ ์๋ง ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
[๋จ์ ]
๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ & ๋๋ฆฐ ์ฒ๋ฆฌ ์๋
๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฐ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค.
์ฑ๋ฅ์ด ์ค์ํ ์ํฉ์์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ ์๋ค.
์ด๋ ค์ด ๋๋ฒ๊น
์คํธ๋ฆผ์ ๋ฉ์๋ ์ฒด์ธ์ ํตํด ์ฐ์ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ค๊ฐ ์ฐ์ฐ ๋๋ ์ต์ข ์ฐ์ฐ์ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒฝ์ฐ ์ ์ฒด ๋ฉ์๋ ์ฒด์ธ์ ๋ฐ๋ผ๊ฐ๋ฉด์ ๋๋ฒ๊น ํด์ผ ํ๋ค.
์ํ ๋ณ๊ฒฝ ๋ถ๊ฐ
์คํธ๋ฆผ์ ์ฌ์ฉ ํ์๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐ๋ผ์ ์คํธ๋ฆผ์์ ์ป์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํ๋ ค๋ฉด ์คํธ๋ฆผ์ ์๋ก ์์ฑํด์ผ ํ๋ค.
์คํธ๋ฆผ ์์
import java.util.ArrayList;
import java.util.List;
public class StreamMain3 {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("์์ด์ ", "์ฌ์", 95));
students.add(new Student("์นด๋ฆฌ๋", "์ฌ์", 100));
students.add(new Student("๋ฐ๋ณด๊ฒ", "๋จ์", 92));
students.add(new Student("์ก์ค๊ธฐ", "๋จ์", 90));
students.add(new Student("๊นํ๋ฆฌ", "์ฌ์", 85));
students.add(new Student("์ ์ ๊ตญ", "๋จ์", 88));
students.add(new Student("๋ฐฉํ์๋
๋จ", "๋จ์", 70));
students.add(new Student("์ด์ง์", "์ฌ์", 63));
students.add(new Student("์ค์", "์ฌ์", 68));
students.add(new Student("ํ์ ์ฐ", "๋จ์", 75));
students.add(new Student("๊ณต์ ", "๋จ์", 80));
//90์ ์ด์ ์ฌ๋์ ์ด๋ฆ ์ถ๋ ฅํ๊ธฐ
students.stream()
.filter(student -> student.getScore()>=90)
.map(Student::getName)
.forEach(System.out::println);
//์ค์๊ฐ ๊ตฌํ๊ธฐ
long size = students.stream().count();
Integer medium = students.stream()
.map(Student::getScore)
.sorted()
.skip(size / 2)
.findFirst()
.orElse(0);
System.out.println("medium = " + medium);
}
}๋ณ๋ ฌ ์คํธ๋ฆผ์ด๋?
์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ(
Parallel Operation) ๋ ๋ฉํฐ ์ฝ์ด CPU ํ๊ฒฝ์์ ์ ์ฒด ์์๋ฅผ ๋ถํ ํด์ ๊ฐ๊ฐ์ ์ฝ์ด๊ฐ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค.์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋ชฉ์ ์ ์์ ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ์๊ณ , ์๋ฐ๋ ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ณ๋ ฌ ์คํธ๋ฆผ์ ์ ๊ณตํ๋ค.
๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ
๋์์ฑ์ ๋ฉํฐ ์์ ์ ์ํด ๋ฉํฐ ์ฐ๋ ๋๊ฐ ํ๋์ ์ฝ์ด์์ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ์คํํ๋ ๊ฒ์ ๋งํ๋ค.
๋ณ๋ ฌ์ฑ์ ๋ฉํฐ ์์ ์ ์ํด ๋ฉํฐ ์ฝ์ด๋ฅผ ๊ฐ๊ฐ ์ด์ฉํด์ ๋ณ๋ ฌ๋ก ์คํํ๋ ๊ฒ์ ๋งํ๋ค.

๋์์ฑ์ ํ ์์ ์ ํ๋์ ์์ ๋ง ์คํํ๋ค. ๋ฒ๊ฐ์ ์์ ์ ์คํํ๋ ๊ฒ์ด ๋งค์ฐ ๋นจ๋ผ ๋์์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋ฟ์ด๋ค.
๋ณ๋ ฌ์ฑ์ ํ ์์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ๋์์ฑ๋ณด๋ค๋ ์ข์ ์ฑ๋ฅ์ ๋ธ๋ค.
๋ณ๋ ฌ์ฑ์ ๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ๊ณผ ์์ ๋ณ๋ ฌ์ฑ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ
์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์ ์๋ธ ๋ฐ์ดํฐ์ ์ผ๋ก ๋ง๋ค๊ณ ์ด ์๋ธ ๋ฐ์ดํฐ์ ๋ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌํด์ ์์ ์ ๋นจ๋ฆฌ ๋๋ด๋ ๊ฒ์ ๋งํ๋ค.
์๋ฐ ๋ณ๋ ฌ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ๋ฒ๋ ฌ์ฑ์ ๊ตฌํํ ๊ฒ์ด๋ค.
์์ ๋ณ๋ ฌ์ฑ
์๋ก ๋ค๋ฅธ ์์ ์ ๋ณ๋ ฌ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ฉฐ, ์์ ๋ณ๋ ฌ์ฑ์ ๋ํ์ ์ธ ์๋ก ์๋ฒ ํ๋ก๊ทธ๋จ์ด ์๋ค.
์๋ฒ๋ ๊ฐ๊ฐ์ ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ๋ด์ฉ์ ๊ฐ๋ณ ์ฐ๋ ๋์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ค.
ํฌํฌ์กฐ์ธ ํ๋ ์์ํฌ
์๋ฐ ๋ณ๋ ฌ ์คํธ๋ฆผ์ ์์๋ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํฌํฌ์กฐ์ธ ํ๋ ์์ํฌ(
ForkJoin Framework) ๋ฅผ ์ฌ์ฉํ๋ค.ํฌํฌ ๋จ๊ณ์์ ์ ์ฒด ์์๋ค์ ์๋ธ ์์์ ์ผ๋ก ๋ถํ ํ๊ณ , ๊ฐ๊ฐ์ ์๋ธ ์์์ ์ ๋ฉํฐ ์ฝ์ด์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ค.
์กฐ์ธ ๋จ๊ณ์์๋ ์๋ธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํด์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ธ๋ค.

๋ณ๋ ฌ ์ฒ๋ฆฌ ์คํธ๋ฆผ์ ํฌํฌ ๋จ๊ณ์์ ์์๋ฅผ ์์๋๋ก ๋ถํ ํ์ง ์๋๋ค. ๋ด๋ถ์ ์ผ๋ก ์์๋ค์ ๋๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ฏธ ๊ตฌํ๋์ด ์๊ณ , ๊ฐ๋ฐ์๋ ์ ๊ฒฝ ์ธ ํ์ ์๋ค.
ํฌํฌ์กฐ์ธ ํ๋ ์์ํฌ๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฐ๋ ๋ํ์ ์ฌ์ฉํ๋ค. ๊ฐ๊ฐ์ ์ฝ์ด์์ ์๋ธ ์์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์์ ์ฐ๋ ๋๊ฐ ํด์ผ ํ๋ฏ๋ก ์ฐ๋ ๋ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.

๋ณ๋ ฌ ์คํธ๋ฆผ ์ฌ์ฉ ์์
parallelStream(): ์ปฌ๋ ์ (List, Set)์ผ๋ก ๋ถํฐ ๋ณ๋ ฌ ์คํธ๋ฆผ์ ๋ฐ๋ก ๋ฆฌํดparallel(): ๊ธฐ์กด ์คํธ๋ฆผ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์คํธ๋ฆผ์ผ๋ก ๋ณํ
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Random random = new Random();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 100_000_000; i++) {
list.add(random.nextInt(101)); // 0~100 ์ฌ์ด์ ์ ์ 1์ต ๊ฐ ์ ์ฅ
}
double avg = 0.0;
long startTime = 0;
long endTime = 0;
long time = 0;
/**
* ์ผ๋ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ
*/
Stream<Integer> stream = list.stream();
startTime = System.nanoTime();
avg = stream
.mapToInt(Integer::intValue)
.average()
.getAsDouble();
endTime = System.nanoTime();
time = endTime - startTime;
System.out.println("avg: " + avg + ", ์ผ๋ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์๊ฐ: " + time + "ns");
/**
* ๋ณ๋ ฌ ์คํธ๋ฆผ ์ฒ๋ฆฌ
*/
Stream<Integer> parallelStream = list.parallelStream();
startTime = System.nanoTime();
avg = parallelStream
.mapToInt(Integer::intValue)
.average()
.getAsDouble();
endTime = System.nanoTime();
time = endTime - startTime;
System.out.println("avg: " + avg + ", ๋ณ๋ ฌ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์๊ฐ: " + time + "ns");
}
}avg: 50.00432972, ์ผ๋ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์๊ฐ: 112810800ns
avg: 50.00432972, ๋ณ๋ ฌ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์๊ฐ: 42708400ns0~100 ์ฌ์ด์ 1์ต ๊ฐ์ ์ซ์์ ํ๊ท ์ ๊ฐ๊ฐ ์ผ๋ฐ ์คํธ๋ฆผ๊ณผ ๋ณ๋ ฌ ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
ํ์คํ ๋ณ๋ ฌ ์คํธ๋ฆผ ์ฒ๋ฆฌ๊ฐ ๋ ๋น ๋ฅธ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ณ๋ ฌ ์คํธ๋ฆผ ์ฑ๋ฅ ๋ฌธ์
๊ทธ๋ ๋ค๋ฉด ์ผ๋ฐ ์คํธ๋ฆผ๋ณด๋ค ๋ณ๋ ฌ ์คํธ๋ฆผ์ด ์ข์ ๊ฒ์ผ๊น?
parallelStream()์ ์ฌ๋ฌ๊ฐ์ง ์ ์ฝ์ฌํญ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ฌธ์ ์ ๋ค์ด ๋ฐ์ํ ์ ์๋ค.
๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋ฏธ์น๋ 3๊ฐ์ง ์์ธ
์์์ ์์ ์์๋น ์ฒ๋ฆฌ ์๊ฐ
์ปฌ๋ ์ ์ ์ ์ฒด ์์์ ์๊ฐ ์ ๊ณ ์์๋น ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ผ๋ฉด ์ผ๋ฐ ์คํธ๋ฆผ์ด ๋ณ๋ ฌ ์คํธ๋ฆผ๋ณด๋ค ๋น ๋ฅผ ์ ์๋ค.
๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ํฌํฌ ๋ฐ ์กฐ์ธ ๋จ๊ณ๊ฐ ์๊ณ , ์ฐ๋ ๋ ํ์ ์์ฑํ๋ ์ถ๊ฐ์ ์ธ ๋น์ฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์คํธ๋ฆผ ์์ค์ ์ข ๋ฅ
ArrayList๋ ๋ฐฐ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ก ์์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํฌํฌ ๋จ๊ณ์์ ์์๋ฅผ ์ฝ๊ฒ ๋ถ๋ฆฌํ ์ ์์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ์๊ฐ์ด ์ ์ฝ๋๋ค.๋ฐ๋ฉด
Set์ด๋LinkedList๊ฐ์ ๊ฒฝ์ฐ ์์ ๋ถ๋ฆฌ๊ฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๋ฆ๋ค.
์ฝ์ด์ ์
CPU ์ฝ์ด์ ์๊ฐ ๋ง์ผ๋ฉด ๋ง์์๋ก ๋ณ๋ ฌ ์คํธ๋ฆผ์ ์ฑ๋ฅ์ ์ข์์ง๋ค.
ํ์ง๋ง ์ฝ์ด์ ์๊ฐ ์ ์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ ์คํธ๋ฆผ์ด ๋ ๋น ๋ฅผ ์ ์๋ค.
๋ณ๋ ฌ ์คํธ๋ฆผ์ ์ฐ๋ ๋ ์๊ฐ ์ฆ๊ฐํ์ฌ ๋์์ฑ์ด ๋ง์ด ์ผ์ด๋๋ฏ๋ก ์คํ๋ ค ๋๋ ค์ง๋ค.
๋ณ๋ ฌ ์คํธ๋ฆผ ์ฌ์ฉ ์ ์์ ๋ฌธ์ ์
๋๊ธฐํ ๋ฌธ์
๋์์ ์ฌ๋ฌ ์ฐ๋ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ฉด์ ๊ฐ์ ์์ ํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ๋ฌธ์
๋ฐ์ดํฐ ์์ ๋ฌธ์
๋ณ๋ ฌ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์๋ ๋ณด์ฅ๋์ง ์๋๋ค.
์์๋ฅผ ๋ณด์ฅํ์ง ์์ผ๋ฉด ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ ์ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ
๋ณ๋ ฌ ์คํธ๋ฆผ์ ์คํธ๋ฆผ์ ๊ฐ ์์๋ฅผ ์ฌ๋ฌ ์ฐ๋ ๋์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ค.
๋๋ฌธ์ ์ฒ๋ฆฌ ์ค์ ์์ฑ๋๋ ๊ฐ์ฒด์ ์๊ฐ ์ฆ๊ฐํ๊ณ ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์ ์๋ค.
์ฐธ๊ณ
Last updated