반응형 개발자/C++(Linux, Window) 썸네일형 리스트형 Wrapper 클래스 Wrapper class 회사 후임이 Wrapper class를 몰라 혹시 모르는 사람들을 위해 미리 정리해 보았다. C++을 쓰시면 많이 볼 수있는데, 래퍼 클래스는 간단하게 말하자면, 기본 자료형(int나 long)같은 데이터를 객체에 넣기 위해 제공하는 함수들 이라고 생각하면 된다. 좀더 명확한 설명은 래퍼 클래스는 기본 자료형(primitive data types)에 대한 클래스 표현을 래퍼 클래스(wrapper classes)라고 합니다. ex) int num = 5; --> Integer num = new Integer(5); 그렇지만, C++ 외에도 래퍼(wrapper)라는 개념이 쓰이는데, 항상 아래와 같은 개념으로 생각하면 되겠다. Wrapper 클래스란 보통 간단한 자료형 하나를 데이터.. 더보기 2D 배열의 관련 연산 최적화 CPU 캐시라인 논문 제목 : OpenMP 병렬 프로그래밍과 Cache 친화적 프로그래밍을 통한 초분광 영상처리 최적화 2. Cache 친화적 프로그래밍 Modern Hardware Architecture Modern comupter들은 아래 그림과 같은 구성을 가지고 있는데, CPU와 가까울 수록 Access time이 줄어든다. 특히 L1 Cache에 접근하기 위해서는 1 Clock만이 소요된다. 따라서 최대의 성능을 C++ application에서 얻기 위해서는 Cache과 친화적인 프로그래밍을 하는 것이 중요하다. 초분광 영상의 복사보정 처리를 하기 위해서는 여느 영상과 같이 C++ 2 차원 배열을 통해 영상을 처리한다. 본 연구에서는 열 단위가 아닌 행 단위로 접근하여 영상처리하는 Cache f.. 더보기 캐시 라인,( C++ STL std::list 보다 std:vector를 써야하는이유) 한 Cache 라인에 있으면 1 Clock 만 필요, -> 어마어마하게 빠른 Data Manipulation이 가능해진다. Vector 는 늘 Cache Line에 데이터를 가지고 있음, List는 NONO CPU의 캐시라인이란? CPU가 메모리로부터 데이터를 가져올 때는 바이트 단위로 가져오지 않고 캐시라인을 가득 채울 만큼의 데이터를 가져오는 것을 말합니다. (메모리의 페이징 기법과 비슷합니다.) 캐시라인의 크기는 32, 64, 128바이트(CPU에 따라 다름) 구성되며 해당 사이즈 경계로 정렬되어 있습니다. CPU-Z로 확인한 CPU 정보 필자의 컴퓨터의 경우 64바이트의 캐시라인을 사용하고 있습니다. 캐시 라인을 사용하는 이유는 일반적인 애플리케이션의 경우 인접한 바이트들을 사용하는 경우가 많기 .. 더보기 [C/C++] EXTERN "C" 우선 extern "C"란 무엇인가에 대해 알아보아야 합니다. extern "C"라는 키워드는 C++ 소스에서 선언한 전역 변수나 함수를 C에서 사용해야 할 경우에 쓰입니다. 그 이유는 함수 #include void test() { printf("Hello World!\n"); } int main() { test(); return 0; } 위의 간단한 소스코드를 예로 들겠습니다. test라는 함수 안에서 Hello World를 출력하고 종료하는 프로그램입니다. 위 소스코드를 각각 gcc와 g++로 컴파일하고, readelf 명령을 이용해 만들어진 바이너리 안의 심볼을 찾아보았습니다. gcc로 컴파일한 경우 test라는 함수명이 그대로 출력되지만, g++로 컴파일한 경우 _Z4testv 라는 복잡한 이름으.. 더보기 이전 1 2 3 4 5 6 7 8 다음