일지
-
자료구조...5일지 2020. 9. 25. 13:53
선형 리스트 구현 선형 리스트의 이해를 기반으로 C#의 ArrayList를 조금 간략화하여 int만 저장할 수 있는 ArrayList를 만든다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 ArrayList() 비어있고 기본 초기 용량을 가지는 인스턴스 생성 ArrayList(ArrayList&) 다른 ArrayList의 데이터로 인스턴스 생성 ArrayList(int) 비어있고 지정한 초기 용량을 가지는 인스턴스 생성 속성 Capacity 저장될 수 있는 총 크기 Count 실제 사용되고 있는 크기 Item[int] 저장된 데이터의 접근 및 설정 메서드 Add(data) 마지막 위치에 데이터 삽입 AddRange(ArrayList&) 마지막 위치에 다른 ArrayList의 데이터를 모두 삽입 ..
-
자료구조...4일지 2020. 9. 24. 08:58
순차 자료구조 데이터를 순서대로 저장하고 인덱스를 부여하여 관리하는 자료구조를 말한다. 배열을 이용해 리스트를 구현한 선형 리스트(또는 ArrayList)를 포함한다. 선형 리스트 데이터가 메모리에 물리적으로 연속적으로 저장되기 때문에 리스트 중간에서 데이터를 삽입하거나 삭제하는 연산을 하는 경우 데이터를 옮긴 후 동작을 처리해야 하는 오버헤드가 발생한다. - 원본 데이터 인덱스 0 1 2 3 4 데이터 10 20 30 40 - 리스트 끝에 데이터를 삽입하는 경우 인덱스 0 1 2 3 4 데이터 10 20 30 40 50 빈 공간에 데이터를 삽입하고 종료한다. - 리스트 중간에 데이터를 삽입하는 경우 인덱스 0 1 2 3 4 데이터 10 20 30 40 40 인덱스 0 1 2 3 4 데이터 10 20 3..
-
자료구조...3일지 2020. 9. 23. 08:57
자료구조 구현을 위한 프로그래밍 언어의 요소 배열 같은 타입의 데이터를 메모리에 연속적으로 저장하여 인덱스를 통해 접근할 수 있도록 만든 자료구조 포인터 저장된 데이터의 메모리 주소를 가리키는 변수 구조체 여러 타입의 데이터를 묶어 사용하는 사용자 정의 자료형 배열 1차원 배열 동일한 타입의 데이터가 선형으로 나열된 배열 문자열 문자 타입의 데이터로 이루어진 1차원 배열 다차원 배열 동일한 타입의 데이터가 2차원 이상으로 나열된 배열 포인터 자료구조 작성에 포인터를 사용할 때의 이점은 다음과 같다. 주소를 저장하는 값이기 때문에 크기가 일정하다. 32비트 빌드 환경 4 bytes, 64비트 빌드 환경 8 bytes 자료구조를 수정하는 경우 메모리 수정 없이 포인터가 가리키는 주소의 변경 만으로 처리가 가..
-
자료구조...2일지 2020. 9. 22. 08:40
추상 자료형 자료의 형태와 관계된 연산을 수학적으로 정의한 것을 말하며 구체적인 구현을 포함하지 않는다. 이러한 추상화를 통해 알고리즘 정의를 단순화할 수 있다. 자료 연산 추상화 추상 자료형 알고리즘 정의 구체화 자료형 프로그램 구현 알고리즘의 표현 방법 자연어 사람이 사용하는 언어를 사용한다. 일관성과 명확성을 유지하기 어렵다. 순서도 순서도의 작성 규칙에 따라 도식화한다. 복잡한 알고리즘의 표현이 어렵다. 프로그래밍 언어 특정 프로그래밍 언어로 작성하여 추가적인 구체화 작업이 필요하지 않다. 해당 언어를 모르는 사람이 이해하기 어려울 수 있으며 다른 언어에서 사용이 필요한 경우 다시 번역하여 변환하는 추가 작업이 필요하다. 가상 코드 프로그래밍 언어의 형태를 갖춘 추상화된 가상의 언어로 표현한다. ..
-
자료구조...1일지 2020. 9. 22. 00:05
자료 구조란? 데이터를 효율적으로 접근 및 사용이 가능하도록 하는 데이터의 조직, 저장, 관리 방법을 말한다. 알고리즘이란? 자료구조로 작성된 데이터를 처리하는 방법을 말한다. 자료 구조의 분류 선형 구조 자료 간 연결 관계가 1:1 관계인 구조 스택, 큐, 덱 배열과 연결 리스트가 포함되기도 한다. 비선형 구조 계층 구조 혹은 망 구조 트리, 그래프 자료의 표현 방법 컴퓨터는 0과 1로 구성된 2 진수를 사용하며 n 개의 비트로 2ⁿ 개의 상태를 표현 가능하다. 1 개의 비트 → 2¹ = 2 개의 상태 표현 (0, 1) 2 개의 비트 → 2² = 4 개의 상태 표현 (00, 01, 10, 11) 3 개의 비트 → 2³ = 8 개의 상태 표현 (000, 001, 010, 011, 100, 101, 110..
-
Unity 프로파일러 스크립트 API 간략 확인일지 2020. 7. 18. 23:02
프로파일러 관련 스크립트는 UnityEngine.Profiling에 포함된 스크립트와 UnityEditor.MemoryProfiler에 포함된 스크립트로 구분할 수 있을 것 같다. 각각은 다음과 같은 클래스를 포함하고 있다. UnityEngine.Profiling에 포함된 내용은 유니티 내장 프로파일러에 타겟을 설정하고 각각의 스크립트에 샘플링을 할 구간을 지정하여 정확한 지점에 기록을 남기기 위해 사용되는 것으로 보인다. UnityEditor.MemoryProfiler에 포함된 내용은 MemoryProfiler에서 사용하는 스냅샷 클래스와 관련된 스크립트이다. 이 중 MemorySnapshot 이하에는 RequestNewSnapshot함수와 OnSnapshotReceived콜백 함수가 포함되는데 콜백 ..
-
Unity 구버전 프로파일러와 신버전 프로파일러 비교일지 2020. 7. 16. 08:46
유니티 Docs에서 어떤것을 검색하는 것 보다 구글을 통해 검색해서 유니티 Docs로 들어가는 게 훨씬 빠른 것 같다. Docs 위치에서 차이는 위와 같다. 아마 프로파일러를 "고급 개발"로 분류하기에는 너무 보편적인 기능이 되어 따로 분석이라는 탭으로 분리한 것 같다. 2019 버전에서 여러 메뉴가 추가되었는데, 확인결과 실질적으로 추가된 것은 2D 물리 프로파일러 모듈과 비디오 프로파일러 모듈 뿐이며 나머지는 기존에 있던 메뉴에서 설명을 조금더 친절하게 쓰면서 길어지거나 기존에 하나의 메뉴에서 분리된 경우이다. 분리된 것 : 프로파일러 창 -> Getting started with the Profiler window, 애플리케이션 프로파일링 길어진 것: UI 프로파일러 -> UI 및 UI 세부 정보 ..
-
메모리 프로파일러 단점, 2017버전에서의 문제점일지 2020. 7. 10. 08:28
먼저, 메모리 프로파일러는 시각적으로 어떤 메모리가 많이 사용되는지 확인할 수 있다는 점에서 굉장히 훌륭한 툴이라고 할 수 있다. 그러나 이 것도 몇 가지 문제가 존재한다. 1. Take Sample 후 트리뷰에 맞게 자료구조를 짜 맞추는데 굉장히 오랜 시간이 걸린다. 2. Take Sample을 시도할 때 자주 죽는다. 3. 프로파일의 내용을 비교하기 어렵다. 일단 이 부분은 2017에서만 확인된 문제이고 아직 신 버전은 제대로 써보지 않아 확인하지 못했다. 1번의 경우 트리뷰와 인스펙터에서 각각 사용하기 위해 정보를 분할하다 보니 느리다고 이해를 할 수 있으나 2번은 왜 죽는건지 이해가 안 되는데, 이 때 사용되는 함수는 단순히 MemoryProfiler.MemorySnapshot 함수를 사용한다. ..