Closed hanbonghun closed 1 year ago
죽은 코드라는건 프로그램의 실행 과정에서 절대로 실행되지 않는 코드를 말합니다.
쉽게 생각해보면, 인텔리제이에서 까만줄로 나오는 애들이 이제 죽은 코드들인거죠. 뭐 예를 들어 if문 안에 어떤 실행문을 넣어놨는데 if문이 항상 false라서 실행자체가 되지 않는 그런 코드들 말입니다.
보통은 컴파일러가 이런 코드들을 알아서 잘 걸러주는데, 병렬처리에서는 그렇지 않은 모양입니다.
또한, filter메소드로 구현이 가능하다고 생각하셨는데, 저도 비슷하게 생각합니다만 책에서 말하는 건 직접 구현이 아니라 컴파일러 자체가 해주는 것을 말하는 거 같습니다.
다른 얘기일 수도 있지만, 만약 filter메소드로도 걸러지지 않은 데이터가 존재한다면, 이러한 데이터들을 처리하기 위한 불필요한 계산들이 수행 될 수도 있습니다. 이런 부분들은 컴파일러가 처리해주지 못할 수 도 있다고 생각합니다.
p260 내용을 보면 컴파일러 최적화는 순차 버전에 집중될 수 있다고 하면서 순차 버전에서는 죽은 코드를 분석하여 사용되지 않는 계산은 아예 삭제하는 등의 최적화를 달성하기 쉽다고 적혀있는데 죽은 코드가 무엇인지 잘 이해가 가지 않고, 사용되지 않는 계산을 삭제하는 최적화는 스트림에서도 filter같은 메서드로 구현이 가능하다고 생각해서 잘 와닿지가 않습니다 설명해주시면 감사하겠습니다.