본문 바로가기

전체 글

(70)
performance profiler 특정 함수, 또는 로직의 수행 시간을 측정할 프로파일러가 필요해졌다. visual studio 자체적으로도 성능 프로파일러가 존재한다. 하지만 너무 무겁기도 하고(정확히 얼마나 느려지는지는 측정해보지 않았다. 그냥 딱 봐도 느려진다.) 무엇보다 디버그 단계에서 하나하나 집어보는 게 아닌 "몇 시간, 며칠 단위로 켜 두고 누적된 값"을 얻기에는 무리가 있었다. 그래서 직접 만들기로 했다. 성능 측정의 두가지 기준인 메모리 사용량과, 소요시간을 측정하려 한다. 시작 지점과, 종료 지점을 지정하여 그 구간을 대상으로 측정 특정 블록 (함수, 중괄호 블록 등)을 대상으로 측정 이때, 프로파일링 모드를 쉽게 변경 가능할 것 이상의 내용을 소요시간, 메모리 변화에 대하여 측정하여 파일 출력 등의 요구사항이 존재할 ..
알고리즘 : 너비 우선 탐색(BFS) 우선 그래프, 트리, 큐 자료구조에 대해 모르고 있다면 아래의 포스팅을 우선 확인하는 것이 좋다. 더보기 자료구조 그래프 (graph) 그래프는 입력된 자료들을 특정한 규칙을 이용해 관계를 맺어 줄 수 있는 형태의 자료구조이다. 예를 들면 사람들의 지인 관계는 그래프로 나타내기 좋은 형태이다. 그래프는 다양한 방법으로 dev-game-standalone.tistory.com 자료구조 트리 (tree) 트리는 그래프의 일종으로서 순환 관계 (= cycle)가 존재하지 않으며, 노드 간의 부모 자식 관계가 추가된 자료구조이다. 나무를 뒤집어 놓은 것과 비슷하게 생겼다 하여 이름 붙여진 트리는, 알고 dev-game-standalone.tistory.com 자료구조 큐 (queue) 큐는 선입 선출(First..
22년 7월 15일 해야할일 1. 2D grid editer 디자인 2. csv parser 문제점 고민해보기 3. 포스팅 노트 처리
프로그램이(프로세스가) 실행 될 때, 메모리의 구조 (data, bss 영역) 2022.06.23 - [컴퓨터 과학/OS (+약간의 컴퓨터 구조)] - 프로그램이(프로세스가) 실행 될 때, 메모리의 구조 (code, text 영역) 프로그램의 동작을 위한 명령어가 기계어로 exe 파일에 저장됨을 이전 포스팅에서 다루었다. 하지만 프로그램이 동작하기 위해서는 명령어뿐만 아니라 데이터를 저장하는 공간 (= 변수)가 필요하다는 사실을 알고 있다. 이번에는 변수 중에서도 제약 없이 접근 가능한 변수인 전역 변수에 대하여, 전역 변수를 위한 메모리 공간에 대하여 적고자 한다. 위는 유명한 프로세스의 메모리 구조 이미지를 gif로 만든 것이다. 많은 문서들에서 전역 변수가 데이터 영역에 저장된다고 하는데 왜 전역 변수를 위한 공간을 따로 둔 것일까? 일반적인 지역변수는 이후 포스팅에서 설명할..
CSV file parser csv 파일을 읽어 2가지 타입으로 저장할 수 있는 파서가 필요해졌다. json파서나 csv파서나 나와있는 오픈소스들이 있지만 (rapidjson 같은...) 필요 이상의 기능이 많거나, 최소 기능뿐이라 결국 어느 정도 커스텀을 해야 했다. 그래서 직접 만들기로 했다. 그래서 이후 사용할 간단한 파서를 하나 만들었고, 필요에 의해 2차원 벡터를 이용해 csv 모양 그대로 저장하는 것 첫 번째 행을 key로 갖는 map의 벡터로 저장하는 것 두 가지 타입으로 준비했다. 메모리를 csv 파일로 출력할 때, 두 번째 타입은 key의 순서가 깨진다는 단점과, key의 충돌 등 해결할 문제가 조금 남아있으므로 현재 진행 중인 토이 프로젝트를 간단히 마무리한 이후 천천히 수정할 예정이다. GitHub - Young..
22년 6월 30일 해야할일 1. 포스팅 전일계속 2. csv parser 수정하기 (미뤄온 내용)
22년 6월 29일 해야할일 1. 스터디 미비 2. 포스팅 전일계속
22년 6월 27일 해야할일 1. 블로그 카테고리 수정 2. 블로그 색인 생성 3. 포스팅 전일 계속 1) 프로세스의 메모리에 대하여 (스택, 힙, 데이터 등등) 2) 메모리 + 어셈블리 3) 어셈블리 + 함수의 호출방식 (stdcall, cdeclcall, fastcall 등등) 4) 변수와 구조체 (지역변수, 전역변수, 동적할당, 반환값, 매개변수 등등) 5) 구조체 + 캐시에 대하여 6) 캐시 + 페이지에 대하여 4. 성능 프로파일러 구현 5. 뱀게임 클라이언트 설계 6. 뱀게임 서버 설계