jin.log
로그인
jin.log
로그인
컴파일러 최적화,캐시
jinsuk
·
2023년 10월 23일
팔로우
0
c샵서버
0
나중에 게임을 배포를 하고 라이브에 나가게 되면 디버그가 아니라 두번째 릴리스 모드로 바꾸게 된다. 릴리스 모드로 바꿔주면 온갖 최적화가 들어가서 프로그램이 훨씬 더 빨라지게 된다.
어셈블리 언어? 컴퓨터랑 가장 가까운 언어
릴리즈 모드에서 우리를 위해서 최적화를 해줬지만 그것이 악수가 되는 경우가 있음
왜냐면 멀티스레드 환경에서 우리는 true로 바꿔주고 있었기 때문에 최적화를 하면 안됐기 때문.
최적화를 안하도록 강제하는 방법 valotile키워드
릴리즈 모드에서는 코드 최적화 때문에 일어나지 않던 버그가 생길 수 있음.
cpu안에 코어가 여러개가 존재할 수 있는데 코어를 다시 확대해보면 ALU라는 연산장치와 기억을 하는 용도인 캐시장치가 있다.
cpu와 메모리는 물리적으로 매우 멀리 떨어져 있어서 메모리에 데이터를 갱신하는거 자체가 매우 힘든 일이다.
따라서 변수나 메모리에 있는 값을 조작한다고 했을때 바로 메모리에다가 바꿔치기를 하는 게 아닌 일단은 캐시 장치에다가 기입을 하고 나중에 시간이 지났을때 한번에 메모리에다가 올리는 작업을 하게 됨
최근에 사용된 변수가 또다시 사용될 확률이 높다.
방금 접근한 그 변수와 인접한 주소에 있는 주소들이 또 방문될 가능성이 높다는 철학
스레드마다 각각의 코어로 실행이 되고 그 코어마다 자신만의 캐시가 있을 텐데 수첩이 다 다르다는 문제 발생
위의 케이스가 더 시간이 적게 걸리는데 공간적인 특성으로 인해 주변 인접한 애들을 접근하겠군 해서 캐시해서 어느정도 갖고 있다고 할 수 있다.
이 상황이 캐시히트라고 불린다.
두번째 경우는 공간적 이점을 살릴 수 없으므로 시간이 더걸림 ㅅㄱ
jinsuk
공부기록용
팔로우
이전 포스트
타입변환-2⭐
다음 포스트
타입변환(포인터)
0개의 댓글
댓글 작성