C# 6

내 코드가 느린 이유 - 최적화에 대한 고찰

숙련된 게임 개발자는 타겟 플랫폼에 성능을 최적화 하는 작업이 개발 사이클 전체에 걸쳐 진행된다.고사양 PC에서는 원활할 수 있지만, 저사양 모바일 플랫폼도 타겟팅 한다면 문제가 달라질 수 있다. 풍부한 환경 디테일, 스케일, 메카닉, 동작, 물리 와같은 많은 기능을 요구하지만,그로인해 특정 구간, 프레임 중 눈에 띄는 성능 저하가 발생될 수 있다. 대부분의 프레젝트에서의 문제는 렌더링과 관련이 있다.너무 큰 텍스쳐, 복잡한 메시, 비용이 큰 쉐이더, 배칭, 컬링, LOD 를 효율적으로 활용하지 못했을 경우이며특별한 게임을 만들기 위해 작성한 C# 코드가 프레임당 CPU 시간을 지나치게 소모하고 있을 수 도 있다. 그렇다면 내 코드가 느린 이유를 따져보자  1. 가비지 컬렉션에 의해 발생되는 오버헤드와 ..

C# 2025.02.10

C#을 활용한 콘솔 환경 채팅프로그램 만들기

개발기간 24.11.08 ~ 24.11.09 참고자료https://www.csharpstudy.com/net/article/1 C# 네트워크 프로그래밍 - C# 프로그래밍 배우기 (Learn C# Programming)C# 네트워크 프로그래밍 네트워크 프로그래밍은 그 범위를 상당히 넓은데, 이 섹션에서는 .NET에 기반한 TCP/IP와 UDP 프로그래밍을 중점적으로 다룬다. 네트워크 모델 네트워크의 세부 기능들을 매www.csharpstudy.com 현재까지 개발된 기능순서1. 프로그램 동작시 클라이언트가 사용할 이름을 받는다.1-1 클라이언트 이름이 admin 이라면 서버를 개설하는 관리자로 판단1-2 admin 이 아니라면 서버에서 사용될 닉네임이 된다.2. 서버는 클라이언트들의 입장, 메세지 전달의..

C# 2024.11.09

C# - stack 주소와 heap 주소 찾기

Stack 메모리 주소 확인하는 방법string a = "안녕하세요";string b = a; a 와 b 는 스택영역에서 각자의 주소를 갖고 하나의 heap 메모리를 참조하고 있는 상황이다. &변수명 으로 조사식을 확인해보면 해당 문자열 참조변수의 크기는 8byte로 해당 주소는 스택영역의 주소임을 알 수 있다. Heap 메모리 주소 확인하는 방법 string a = "안녕하세요";string b = a;a = "안녕하세요2";string c = "안녕하세요";GCHandle handle = GCHandle.Alloc(a, GCHandleType.Pinned);GCHandle handle2 = GCHandle.Alloc(b, GCHandleType.Pinned);GCHandle handle3 = GCHa..

C# 2024.07.25

C# 가변성,공변성, 반공변성, 불공변성

공변성과 반공변성은 제네릭 타입 시스템에 타입의 상속 관계에 따라 제네릭 타입변환을 허용하는 특성을 의미한다. string[] strArr = new string[5];object[] objArr = strArr;위의 코드처럼 형변환이 가능한 성질을 의미한다. .Net 4.0이전 버전에서 IEnumerable 인터페이스 와 그 이후의 인터페이스를 살펴보자public interface IEnumerable : IEnumerable // .Net 4.0 이전public interface IEnumerable : IEnumerable // 그 이후버전  위의 코드를 보면 4.0 이후의 버전에서 갑자기 out 키워드가 추가되었다. IEnumerable Ilist = new List();IEnumerable ob..

C# 2024.07.21

C# out , ref 키워드의 차이

ref 와 out 키워드는 매개변수 작성시 사용되는 키워드로함수호출시 전달받는 매개변수의 참조값을 전달하게 된다. 두개의 키워드는 제약의 차이점이 있다. 첫번째 차이점우선 아무것도 하지않는 메서드를 작성해보자.static void MethodRef(ref int m_value){}static void MethodOut(out int m_value) // CS0177 에러{} CS 0177현재 메서드를 벗어나기 전 out 매개변수를 할당해야한다. out 키워드는 출력전용 키워드로 전달받은 매개변수의 값을 반드시 대입하여 내보내줘야한다. static void MethodOut(out int m_value){ m_value = 5;} 에러코드가 사라진다. 두번째 차이점매개변수 입력과정을 살펴보자.int ..

C# 2024.07.17

C# in 키워드

in 키워드는 여러 맥랙에 사용되며 각 맥락마다 의미가 다르다.in 키워드를 사용하는 대표적인 예 : 매개변수 , foreach 문 , 제네릭 타입 매개변수 ① 메서드의 매개변수에서 사용메서드 매개변수에서 사용되는 in 키워드는 매개변수를 읽기전용으로 전달하기 위해 사용된다.이때 전달되는 매개변수는 참조를 전달하게 된다.public class TestClass{ int _myData; public void Test(in int m_data) { _myData = m_data; // 가능 Console.WriteLine(m_data); // 가능 m_data = 3; // 불가능 , 컴파일 에러 }} 매개변수가 값형식인데 in 키워드..

C# 2024.07.14