SW 그리고 아빠 엔지니어링 중...

아는 만큼 보이고, 경험해봐야 알 수 있고, 자꾸 써야 내 것이 된다.

trivial 3

trivial 뜻 : 하찮은, 그렇지만 하찮지 않은 trivial‼

trivial을 알아보기 이전에 한 번 생각해 보자. 💬 trivial을 왜 알아야 할까?🤔 내가 구현한 객체가 trivial 하지 않으면 복사 생성자나 복사 대입 연산자가 호출되어 복사가 된다. 너무 당연한 얘기이다.그런데 trivial 하면 컴파일러가 복사 생성자나 복사 대입 연산자를 호출하지 않고 메모리 블록을 통째로 복사를 한다.(bitwise copy) 다시 말해 코드가 최적화되어 복사 속도가 빨라지기도 하고 이를 고려하여 구현할 수도 있다.💬 trivial의 첫인상은 마치 내가 산 주식이 100원 올라 자랑하고 있는데, 친구가 훨씬 더 많이 올랐다는 소릴듣는 느낌이랄까? 다시 말해 이상하게 성능을 손해 본 느낌이 들게 하였었다.하찮은 녀석이, 하찮지 않기 때문에 알아볼 필요가 있다.🧐t..

L C++ 2024.08.25

memory order 조정 이야기

프로그램 코드들은 기계어로 변환되어 메모리에 올라가고 fetch, decode, execute를 반복하며 수행이 된다. L fetch(명령어 가져오기) decode (명령어 해석하기) execute (명령어 실행기) 이때 메모리 순서라고 하는 것은 결국 CPU가 메모리에 있는 명령어를 읽는 순서를 말하는데 pc -> 0x0000 mov .... 0x0001 add .... 0x0002 mov .... *pc (프로그램 카운터) 이 순서가 컴파일 시 컴파일러에 의해 혹은 런타임 중에 CPU에 의해 조정될 수 있기에 이에 대해 알아보자. CPU에 의해 조정되는 메모리 순서아래 표에도 나와있지만 모든 CPU가 메모리 순서 조정을 지원하진 않는다. 전통적인 아키텍처인 X86과 AMD, 즉 당신의 PC는 메모리 ..

L C++/Concurrency 2024.01.30

[Concurrency] ❇ std::atomic ❇의 이해

발행 : 2014/01/16 수정 : 2014/01/20 - atomic에 대한 전체 내용에 대한 링크 추가 - 메모리 오더 옵션에 대한 정보 추가 - gcc에서 is_lock_free 가 에러 나는 이유 추가 본 글을 atomic 중 lock free에 대해 중점적으로 설명한 내용입니다. (상세 설명은 제일 밑 참고에 링크를 추가하였습니다.) atomic의 사전적 의미 원자성(原子性, atomicity)은 어떤 것이 더 이상 쪼개질 수 없는 성질을 말한다. 어떤 것이 원자성을 가지고 있다면 원자적(atomic)이라고 한다. 생각해 봅시다. C++ 코드에서 원자적인 것은 어떤 것이 있을까요? 한 줄짜리 코드인 x++ 는 원자적일까요? 정답은 아니다. 한 줄짜리 x++을 기계어로 변환하면 아래와 같이 3개..

L C++/Concurrency 2024.01.16
320x100