컴파일러 최적화,캐시

jinsuk·2023년 10월 23일
0
  • 나중에 게임을 배포를 하고 라이브에 나가게 되면 디버그가 아니라 두번째 릴리스 모드로 바꾸게 된다. 릴리스 모드로 바꿔주면 온갖 최적화가 들어가서 프로그램이 훨씬 더 빨라지게 된다.
  • 어셈블리 언어? 컴퓨터랑 가장 가까운 언어
  • 릴리즈 모드에서 우리를 위해서 최적화를 해줬지만 그것이 악수가 되는 경우가 있음
  • 왜냐면 멀티스레드 환경에서 우리는 true로 바꿔주고 있었기 때문에 최적화를 하면 안됐기 때문.
  • 최적화를 안하도록 강제하는 방법 valotile키워드
  • 릴리즈 모드에서는 코드 최적화 때문에 일어나지 않던 버그가 생길 수 있음.

  • cpu안에 코어가 여러개가 존재할 수 있는데 코어를 다시 확대해보면 ALU라는 연산장치와 기억을 하는 용도인 캐시장치가 있다.
  • cpu와 메모리는 물리적으로 매우 멀리 떨어져 있어서 메모리에 데이터를 갱신하는거 자체가 매우 힘든 일이다.
  • 따라서 변수나 메모리에 있는 값을 조작한다고 했을때 바로 메모리에다가 바꿔치기를 하는 게 아닌 일단은 캐시 장치에다가 기입을 하고 나중에 시간이 지났을때 한번에 메모리에다가 올리는 작업을 하게 됨
  • 최근에 사용된 변수가 또다시 사용될 확률이 높다.
  • 방금 접근한 그 변수와 인접한 주소에 있는 주소들이 또 방문될 가능성이 높다는 철학
  • 스레드마다 각각의 코어로 실행이 되고 그 코어마다 자신만의 캐시가 있을 텐데 수첩이 다 다르다는 문제 발생
  • 위의 케이스가 더 시간이 적게 걸리는데 공간적인 특성으로 인해 주변 인접한 애들을 접근하겠군 해서 캐시해서 어느정도 갖고 있다고 할 수 있다.
  • 이 상황이 캐시히트라고 불린다.
  • 두번째 경우는 공간적 이점을 살릴 수 없으므로 시간이 더걸림 ㅅㄱ
profile
공부기록용

0개의 댓글