inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

캐시 이론

캐시 강의 관련 질문이 있습니다!

525

긍정맨

작성한 질문수 2

0

 

안녕하세요,

강사님 수업을 잘 듣고 있습니다. 쉽게 말씀해주셔서 저처럼 잘 모르는 사람도 잘 따라갈 수 있네요.

 

최근 멀티 쓰레드를 모두 듣고 복습을 좀 해보고 있었는데, 이중  for문 사용 시에 locality로 인해 캐시에서 빠르게 불러올 수 있다는 걸 다른 예시를 통해서도 이해해보려고 하고있습니다.

 

그러면 아래와 같이 바깥 for문이 작고, 안쪽 for문이 클 때 속도가 더 빠른 것도 16분 경의 예시와 같이 locality로 인해 그런건가요?

unity network C#

답변 1

2

Rookiss

이 부분은 캐시 때문이라기보다는, 만들어지는 코드 특성 때문으로 보입니다.


이렇게 안쪽 for문을 컴파일한걸 어셈블리 의사코드로 표현한다면
INC(1증가), CMP(비교), JLE(비교결과에 따라 코드 실행 위치 이동)으로 이루어질테고,
j < 100000을 빠져나가는 시점에 실행 코드 위치를 바꾸기 위해 점프를 해야 할텐데요.
상대적으로 INC, CMP 연산에 비해 JUMP 계열이 오래 걸리기 때문에
점프를 적게 하는 쪽이 성능에 유리할테고,
그렇다 보니 1번 케이스가 아주 미세하게 효율이 더 좋을 것으로 보입니다.

캐시는 메모리와 연관되어 작동하는데 사실 j, i 같은 경우
바로 레지스터에 있는 값을 카운터로 사용할 수도 있기에
만들어지는 코드를 뜯어보기 전에는 꼭 캐시 이슈라 볼 수는 없을 것 같습니다.


0

긍정맨

아, 어셈블리로 작동방식을 말씀해주시니 이해가 확 되네요!

감사합니다. 

C#에서의 RAII

0

72

3

TLS 질문드립니다.

0

82

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

76

2

Unity Span

0

100

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

98

1

Write Read 커서 키워드

0

88

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

85

2

네트워크 Send 전담 스레드 배치

0

115

2

UnhandledException 으로 서버 터지는 경우

0

104

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

93

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

108

2

receive하는 부분과 send하는 부분의 차이

0

154

2

커서의 위치의 중요성

0

111

2

C++ 전혀 모르는데 C# 서버

0

179

2

강의에 질문이 있습니다

0

94

2

멀티스레드 이해도 질문

0

108

1

500 vs 500

0

149

3

OnAcceptHandler 액션 함수

0

71

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

207

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

87

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

116

1