2025/02/10 5

실행 플랫폼 별 생성되는 기계어 코드가 다른 이유

컴파일러는 실행할 플랫폼에 맞는 기계어 코드를 생성해야한다.하지만 운영체제와 CPU 아키텍처마다 명령어 세트, 실행 방식이 다르기에 동일한 소스코드라도 각 플랫폼에 맞게 다르게 변환된다. 주요 원인1. CPU 아키텍처의 차이 - CPU 마다 지원하는 명령어 세트가 다름 대표적 아키텍쳐 종류x86 = 데스크톱, 서버에서 사용ARM = 스마트폰, 임베디드 시스템 같은 코드라도 x86 과 ARM 에서 실행되는 코드가 다르게 컴파일 됨int Add(int a, int b){ return a + b; }====== x86 ======mov eax, edi ; // a 값을 eax 레지스터에 저장add eax, esi ; // b 값을 더함ret ; // 함수 반환====== ARM64 ..

CS 2025.02.10

컴파일러 Compiler

컴파일러는 프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 프로그램이다.평소에 작성하는 코드는 사람이 이해하기 쉬운 고수준 언어이지만 컴퓨터는 기계어 0과 1로 된 코드만 이해할 수 있다.컴파일러는 이 둘을 연결해주는 역할을 하며, 소스 코드를 실행 가능한 프로그램으로 변환해준다. 컴파일러의 주요 역할1. 코드 변환 : 프로그래머가 작성한 코드를 컴퓨터가 실행할 수 있는 기계어로 변환2. 코드 최적화 : 성능 향상을 위해 중복 코드 제거, 실행 속도 개선, 메모리 최적화 등을 수행3. 오류 감지 : 코드에 문법 오류, 의미 오류가 있는지 검사 컴파일러 동작 과정1. 전처리 Preprocessing컴파일 전 코드에서 #include, #define 같은 전처리기 지시문을 처리하는 단계로이 과정에서는..

CS 2025.02.10

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

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

C# 2025.02.10

Unity Job System

Job System 은 멀티 스레딩을 쉽게 활용할 수 있게 도와주는 유니티의 기능기존의 C# Thread 나 Task 를 직접 사용하지 않고도 성능을 최적화 하며 멀티코어 CPU를 효과적으로 활용할 수 있다. 기존 C# 멀티 스레딩의 문제점1. Thread, Task를 직접 사용하면 RaceCondition, Deadlock 등의 문제가 발생될 수 있음2. 유니티는 기본적으로 싱글 스레드에서 동작하기에, 직접 멀티 스레딩을 활용할 경우 충돌 발생 가능성이 있음 잡 시스템의 장점 - 멀티코어 CPU를 자동으로 활용 - 데이터 중심 처리방식 - 자동 스레드 관리 - 안전한 동기화

Unity 2025.02.10

멀티스레딩 Multi-Threading

멀티스레딩은 하나의 프로세스에서 여러개의 작업 단위(Thread)를 동시에 실행하는 기술 Thread스레드는 프로그램(프로세스) 내에서 실행되는 작업 단위를 의미 - 하나의 프로세스는 기본적으로 하나의 메인 스레드를 가짐 - 멀티 스레딩을 사용하면 여러 개의 스레드를 생성해 병렬 작업을 처리할 수 있음 멀티 스레딩이 필요한 이유 1. 작업속도 향상 : 여러 작업을 동시에 실행해 성능을 향상시킬 수 있음   - 물리연산, AI, UI업데이트를 각 다른 스레드에서 처리해 더 부드러운 동작을 진행  2.CPU 사용률 최적화 : 현대 CPU는 여러 코어를 가지고 있으며 멀티 스레딩을 활용하면   이 여러개의 코어를 활용하므로 성능을 극대화 할 수 있음  멀티 스레딩의 주의점 1. Race Condition   ..