Study: Software(SW)/SW: Language

    [C++] 객체지향 프로그래밍: static, explicit, mutable, default, delete...

    static 총 생성된 인스턴스의 수를 구하는 클래스가 있다고 하면? 어떻게 구현할 것인가? 대부분이 전역변수를 설정하여 구한다고 할 것이다. 전역변수의 경우 프로젝트의 크기가 커질수록 실수로 인해 겹쳐서 오류가 날 수 있어 사용하지 않는 편이 좋다. 따라서 전역변수 설정을 피하기 위해서 나온 클래스에만 종속되는 변수가 'static' 이다. 이 static 멤버 변수의 경우, 클래스의 모든 객체들이 '공유' 하는 변수로써 각 객체 별로 따로 존재하는 멤버 변수들과는 달리 모든 객체들이 '하나의' static 멤버 변수를 사용하게 된다. static 멤버 변수의 경우, 멤버 변수들 처럼, 객체가 소멸될 때 소멸되는 것이 아닌, 프로그램이 종료될 때 소멸된다. static 멤버 변수는 아래와 같이 정의한다..

    [C++] C++ Json 라이브러리 성능비교(벤치마크): JsonCpp, Nlohmann/json...

    참고: 이 조사의 목적은 JsonCpp로 적용되어 있는 기존의 Json library를 Nlohman/Json으로 바꾸자를 제안이 있어서 조사하였음을 참고해주시기 바랍니다. 그렇다고 다른 라이브러리에 대한 내용이 빠진 것은 아닙니다. C/C++ Json Library Benchmark C/C++에는 41개의 오픈소스 Json parsing/generation libraries가 있습니다. JSON parsing/generation의 성능에 따라 server-side application에 영향을 줄 수 있습니다. Benchmark는 속도, 메모리, 코드사이즈를 기준으로 성능평가를 진행하였습니다. 자세한 Benchmarks와 Measurement의 기준은 아래의 링크를 참조하세요. https://githu..

    [C++] 병행 컴퓨팅: concurrency, thread...

    병행 컴퓨팅 (concurrency) 여러 개의 계산들을 연속적(하나씩 일을 마치는 것)으로가 아닌, 병행 처리하는 것을 말합니다. 병행 시스템은 다른 계산들이 모두 끝날 때까지 기다리지 않고 계산을 진행할 수 있는 환경을 말하며, 즉 하나 이상의 계산은 동시에 진행이 가능합니다. 프로그램 논리 구조 상에서 연산들 간의 의존 관계가 많을수록 병렬화가 어려워지고, 반대로, 다른 연산의 결과와 관계없이 독립적으로 수행할 수 있는 구조가 많을수록 병렬화가 매우 쉬워집니다. 쓰레드: CPU 코어에서 돌아가는 프로그램 단위. 한 프로세스 내에 있는 쓰레드끼리는 메모리 교환 가능. 프로세스: 최소 한 개 쓰레드로 이루어져 있으며, 여러 개의 쓰레드로 구성(멀티 쓰레드). 프로세스끼리 메모리를 공유하지 않음. std..