Boost 스터디 발표자료
작년에 작성했던 boost 스터디 발표입니다.
- 컴퓨터 공학/C++
- · 2020. 1. 12.
작년에 작성했던 boost 스터디 발표입니다.
[문제 소개] 현재 회사에서 C++ 기반의 제품을 개발하여 출시하였는데, 프로젝트가 약 5년 전에 시작된 제품이다 보니 C++11 기반으로 작업이 진행되고 있었습니다. 이 제품은 Windows와 CentOS를 대상으로 개발되었습니다. 이후 회사에서 Visual Studio 2015를 사용하게 되면서 Windows에서는 자연스럽게 C++14를 사용하였지만, CentOS는 그대로 C++11를 사용하고 있었습니다. 이때 사용한 GCC 버전이 4.8.5 였는데, 이 버전은 C++11까지만 정식으로 지원하고 있었습니다. 이에 따라, Windows와 CentOS의 C++ 버전이 지금까지 계속 다른 상태로 개발이 되었는데, 최근에 이로 인한 이슈가 적잖이 발견되어 CentOS의 C++ 버전을 14로 변경할 필요성을 ..
크롬 브라우저에서 크롬 확장 앱을 사용하면 로컬에 있는 C/C++ 기반의 앱과 통신을 할 수 있습니다. [준비물] * 크롬 브라우저 * Visual Studio (버전 무관) 첨부 파일로 올린 'chrome_extension_sample.7z'을 내려받아 압축을 해제합니다. 그림과 같이 메뉴 - 도구 더보기 - 확장 프로그램을 클릭합니다. 우측 상단에 개발자 모드를 on으로 설정합니다. 좌측 상단에 '압축해제된 확장 프로그램을 로드합니다.'를 클릭합니다. 그리고 위에서 내려받은 압축파일에 있는 app 폴더를 선택해줍니다. 그럼 다음과 같이 'Chrome 앱'에 확장 프로그램이 추가된 것을 확인할 수 있습니다. 다시 크롬 브라우저의 새창을 열어서 url 입력창에 chrome://apps/ 을 입력하여 ..
vector 컨테이너에 대한 반복문을 수행하는 방법은 1) 범위 기반 for 문, 2) 인덱스 접근 for 문, 3) 데이터 배열 취득 후 인덱스 접근 for문, 4) 반복자 사용 for 문 있다. 각각의 방식에 대한 성능이 궁금해져서 각 방식에 대한 성능을 측정해보기로 하였다. 데이터 크기만큼 int형 원소를 갖는 vector를 생성한 후 각 방식대로 반복문을 수행하면서 각 원소에 1이라는 값을 대입하였다. 데이터 크기를 1024, 2048, 4096, ..., 16777216 과 같이 1024부터 두 배씩 증가하여 각 방식의 성능을 측정하였며, 이 작업을 열 번 반복하여 평균을 내었다. 소스코드는 다음과 같다. #include #include #include #include #include #in..
C/C++에서 다음과 같이 구조체를 정의할 경우 구조체의 크기는 다음과 같습니다. struct PlayerData{ int32_t age; //4 int16_t height; //2 }; void main() { printf("PlayerData 크기: %d\n", sizeof(PlayerData)); } 크기: 8 이는 성능의 최적화를 위해 컴파일러에서 구조체의 크기를 가장 큰 데이터인 int32_t의 배수로 정의했기 때문입니다. 그러나, 네트워크를 통해 바이트 배열 데이터를 받아 바로 구조체에 넣고 싶다면 구조체의 크기가 정의된 데이터 크기와 일치해야 합니다. 이럴 때, 다음과 같이 구조체의 정렬 크기를 조절할 수 있습니다. #pragma pack(push, 1) struct PlayerData{ i..
C++에서 일반적으로 크기가 정해지지 않은 배열을 사용하기 위해 vector를 사용하고, 크기가 정해진 배열을 사용하기 위해 array를 사용합니다. 그리고 vector와 array의 원소를 for문을 통해 접근할 때 다음과 같은 코드를 작성합니다. vector vec; int length = vec.size(); for (int i = 0; i < length; i++) { vec[i] = i; } 그리고 문득 vector의 인덱스 접근 방식과 일반 배열 []의 처리 성능이 얼마나 차이나는지 궁금하여 반복문으로 값을 할당하는 실험을 진행하였습니다. 시간 측정 도구는 제가 이전에 작성한 HourMeter 클래스 객체를 사용하여 진행하였습니다. vector와 array 그리고 일반 배열[]을 크기 1,00..