Linux (C 구현)와 Windows (C++ 구현)에서 CPU affinity(선호도) 설정 구현 예시를 살펴보자. 이 예시에서는 프로세스(Linux)와 스레드(Windows)를 CPU 0에 바인딩한다. mask를 수정해 다른 또는 여러 CPU에 바인딩할 수 있다. 예를 들어, CPU 0과 CPU 1에 모두 바인딩하려면 Windows에서는 mask를 3(binary 11)으로 설정하고 Linux에서는 CPU_SET(1, &mask)를 사용한다. Linux (Using C): Linux에서 'sched_setaffinity()' 함수를 사용한 구현 예시다.cpu_set_t mask: CPU 세트를 정의하는 자료구조CPU_ZERO(&mask): CPU 세트를 비어있는 상태로 초기화CPU_SET(0, &m..
멀티스레딩 시스템에서 특정 코어를 작업에 지정하는 것운 꽤 일반적이다. 이러한 사용 CPU 선호도(affinity) 또는 프로세서 선호도라고 한다. 실제로 CPU 선호도 설정은 운영체제 내에서, 운영체제에서 제공하는 API(예: Linux의 sched_setaffinity)를 사용하거나 애플리케이션 코드 내에서 등 다양한 수준에서 수행할 수 있다. 많은 최신 운영체제와 스레딩 라이브러리는 CPU 선호도를 설정하는 메커니즘을 제공한다. 그러나 CPU 선호도 설정은 이점을 제공할 수 있지만 신중한 고려와 튜닝이 필요하다는 점에 유의해야 한다. 코어에 작업을 잘못 할당하면 성능이 최적화되지 않을 수 있으며, 제대로 수행하지 않으면 시스템의 전반적인 효율성이 저하될 수도 있다. 이 구현의 이유는 아래와 같다. ..
C와 C++는 메모리 관리에 더 많은 제어 기능을 제공해 잠재적인 차이점을 제공하는 반면, Python은 이러한 세부 사항을 추상화해 일부 효율성을 희생하는 대신 개발을 간소화한다. C, C++ Low-Level Memory ManagementManual Memory Allocation (수동 메모리 할당)C: C에서는 malloc, calloc, realloc, free와 같은 함수를 사용해 메모리를 직접 관리한다.malloc(size_t size): 초기화 되지 않은 메모리의 크기(바이트)를 할당한다.calloc(size_t num, size_t size): num 요소 배열의 각 크기 바이트에 대한 메모리를 할당하고 모든 바이트를 0으로 초기화한다.realloc(void *ptr, size_t si..
일반적으로 C++(및 C)의 구현은 Python의 구현보다 더 빠른 경향이 있다. 그러나 모든 유형의 애플리케이션에서 성능 차이가 크지는 않다. 예를 들어, 개발 속도 및 유연성 측면에서 Python은 단순성과 풍부한 라이브러리 에코시스템으로 인해 신속한 개발 및 프로토타이핑에 선호되는 경우가 많다. IO-boun 애플리케이션의 경우 Python은 높은 수준의 추상화와 사용 편의성으로 인해 웹 서버, 데이터 처리 스크립트 등 IO 바인딩 애플리케이션에 매우 효율적일 수 있다. 요악하면, C++와 C는 일반적으로 컴파일된 특성과 낮은 수준의 제어로 인해 실행 시간이 빠르지만, Python은 사용 편의성과 빠른 개발 기능으로 인해 실행 속도는 느리지만 많은 애플리케이션에서 강력한 선택이 될 수 있다. 아래는..
- Total
- Today
- Yesterday
- leetcode
- Hash Map
- Android
- 티스토리챌린지
- Computer Graphics
- 안드로이드
- ml
- join
- socket programming
- 이코노미스트 에스프레소
- 파이썬
- vertex shader
- 오블완
- defaultdict
- 투 포인터
- java
- 딕셔너리
- 이코노미스트
- DICTIONARY
- The Economist Espresso
- C++
- machine learning
- min heap
- tf-idf
- The Economist
- 리트코드
- Python
- I2C
- 머신 러닝
- 소켓 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |