갬장장이
캐쉬를 고려한 프로그래밍
갬장장이
갬장장이의 코드 대장간
갬장장이
전체
오늘
어제
  • 분류 전체보기 (216)
    • 게임 연구소 (6)
    • 게임 제작 (15)
      • We need more guns (2024~) (1)
      • Rovenhell (2023) (2)
      • Geophyte (2020~2021) (5)
      • 아드레날린 러시 (2021) (2)
      • Treadmill (2019) (1)
      • 습작들 (2019~) (2)
      • 그 외 (~2018) (2)
    • mathematics (33)
      • game mathematics (30)
      • linear algebra (3)
    • networking (3)
    • computer graphics (46)
      • 3D Graphics (23)
      • DirectX (8)
      • OpenGL (13)
      • graphics theory (2)
    • game engines (10)
      • Unity (0)
      • Unreal Engine (10)
    • os (6)
      • Linux (0)
      • operating system (1)
      • multithreading, parallel co.. (5)
    • lang (34)
      • c++ (15)
      • .NET (5)
      • python (1)
      • java (3)
      • erlang, elixir (1)
      • js, ts (7)
    • software engineering (47)
      • PS (25)
      • algorithms (15)
      • data structures (2)
      • design patterns (4)
    • cs (4)
    • database (2)
      • SQL (1)
    • web (6)
      • web (3)
      • frameworks, libraries (3)
    • finance (0)
    • 음악 제작 (1)
    • life (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [공지] 블로그 안내

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
cs

캐쉬를 고려한 프로그래밍

2021. 5. 20. 14:11
namespace GameServerCore
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] arr = new int[10000, 10000];

            {
                long now = DateTime.Now.Ticks;
                for (int y = 0; y < 10000; ++y)
                    for (int x = 0; x < 10000; ++x)
                        arr[y, x] = 1;
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(y, x)순서 걸린시간 {end - now}");
            }

            {
                long now = DateTime.Now.Ticks;
                for (int y = 0; y < 10000; ++y)
                    for (int x = 0; x < 10000; ++x)
                        arr[x, y] = 1;
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(x, y)순서 걸린시간 {end - now}");
            }
        }
    }
}

(C#)

 

전자 < 후자

이유: 2d 어레이에서 가로줄로 순차적으로 순회하는게 세로로 순회하는 것보다 빠르게 때문

ex. 5x5에서

[], [], [], [], []

[], [], [], [], []

...

일때 가로로 한줄씩 순회하는 게 공간면에서 더 가까움.

캐쉬는 메모리의 물리적 거리를 고려해 가까운 것 부터 미리 캐싱해두므로 이게 더 빠름.

저작자표시 비영리 변경금지

'cs' 카테고리의 다른 글

쿠버네티스  (0) 2022.12.26
객체지향 프로그래밍 3요소 5원칙  (0) 2021.04.19
Big-O의 수학적 정의  (0) 2021.03.08
'cs' 카테고리의 다른 글
  • 쿠버네티스
  • 객체지향 프로그래밍 3요소 5원칙
  • Big-O의 수학적 정의
갬장장이
갬장장이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.