프로그래밍206 High Performance C++ References Ch 9, The Art of Writing Efficient Programs Contents Move Semantics RVO (Return Value Optimization), Named RVO (NRVO) How to Avoid (Unnecessary) Copying Unnecessary Memory Allocations Memory Management in Concurrent Programs Optimization of Conditional Execution 이번 포스팅에서는 C++에서 고효율의 코드를 작성하는 방법에 대해서 살펴보고, 수행하고자 하는 작업을 명확하게 표현하는 코드를 작성하는 것에 대해서 살펴본다. 포스팅에서 사용된 전체 코드는 링크에서 확인할 수 있다. Unn.. 2024. 2. 5. Concurrent Data Structures References Ch 6, The Art of Writing Efficient Programs Contents Building Blocks for Concurrent Programming Counters and Accumulators Publishing Protocol Publishing Pointer Thread-Safe Shared Pointer (Atomic Shared Pointer) 포스팅에서 사용된 모든 코드는 link에서 확인할 수 있음 동시 프로그램 개발은 일반적으로 상당히 어려운 편에 속한다. 특히 몇 가지 요소에 의해서 더 어려워진다. 예를 들어, 정확성과 효율성을 모두 만족하는 동시 프로그램, 뮤텍스가 많은 복잡한 프로그램이나 lock-free 프로그램은 더욱 어렵다. 이러한 복잡.. 2024. 2. 3. Lock-Based, Lock-Free, Wait-Free Program References Ch6, The Art of Writing Efficient Programs Contents Amdahl's Law Compare-And-Swap (CAS) Lock-based, Lock-free, and Wait-free Programs Spinlock Deadlock, Livelock, Convoying 포스팅에서 사용되는 전체 코드는 link를 참조 Memory Model (Memory Order and Barrier) References Ch5, The Art of Writing Efficient Programs Contents Concurrency and Order Memory Model (Memory Order and Barrier) Relaxed Memory Order A.. 2024. 2. 2. Memory Model (Memory Order and Barrier) References Ch5, The Art of Writing Efficient Programs Contents Concurrency and Order Memory Model (Memory Order and Barrier) Relaxed Memory Order Acquire-Release Memory Order Release Memory Order Sequentially Consistent Memory Order Threads and Memory References Ch5, The Art of Writing Efficient Programs Contents Threads and Memory (Data Sharing) Concurrency and Memory Syncrhonization Mutex, Ato.. 2024. 1. 27. Threads and Memory References Ch5, The Art of Writing Efficient Programs Contents Threads and Memory (Data Sharing) Concurrency and Memory Syncrhonization Mutex, Atomic Variables False Sharing 요좀 고성능 컴퓨터는 여러 CPU를 가지거나 여러 CPU 코어를 갖는다. 대부분의 노트북도 최소 2개에서 4개의 코어를 가지고 있다. 성능 측면에서 효율이 높으려면 하드웨어를 유후 상태로 두지 않아야 한다. 많은 CPU 코어 중 하나만 사용하는 것과 같이 전체 하드웨어 성능의 일부만 사용하는 경우에는 프로그램이 효율적이거나 고성능일 수가 없다. 프로그램이 한 번에 둘 이상의 프로세서를 사용하는 방법.. 2024. 1. 25. Cache References Ch4, The Art of Writing Efficient Program Contents Memory Architecture Measuring Memory Access Speed Optimizing Memory Performance 포스팅에서 사용된 모든 코드는 link에서 확인할 수 있다. CPU 다음으로 메모리가 전체 프로그램의 성능을 제한하는 경우가 많다. 이번 포스팅에서는 현대 메모리의 아키텍처, 약점, 그리고 이러한 약점을 해결하거나 최소한 숨기는 방법에 대해 살펴본다. 많은 프로그램에서 성능은 프로그래머가 하드웨어의 기능을 활용하여 메모리 성능을 얼마나 향상하는지에 전적으로 달려있다. Superscalar Instruction-Level Parallelism (ILP) R.. 2024. 1. 22. Pipelining & Branch Optimizations References Ch3, The Art of Writing Efficient Programs Contents CPU Pipelines and Speculative Execution Branch Optimization and Branchless Computing (branch prediction) Branchless Computing 이전 포스팅에 이어서 CPU 아키텍처 이해를 바탕으로 수행되는 최적화에 대해서 살펴보자. Instruction-Level Parallelism (ILP) References Ch3, The Art of Writing Efficient Program Contents CPU Architecture Internal concurrency of the CPUs for optimum.. 2024. 1. 21. Instruction-Level Parallelism (ILP) References Ch3, The Art of Writing Efficient Program Contents CPU Architecture Internal concurrency of the CPUs for optimum performance (Super Scalar, ILP) Visualizing ILP CPU Architecture 효율적인 프로그램은 사용 가능한 리소스를 낭비하지 않으며 최대한 활용하는 프로그램이다. 일반적으로 성능(performance)은 특정 목표를 가지고 정의되기 때문에 간단하게 고성능 프로그램을 정의할 수는 없다. 다만, 일반적으로 아래의 두 성능에 대해 크게 관심을 갖는다. Computational Performance Throughput 이 두 가지 성능은 효율성과 밀접한.. 2024. 1. 20. [C++] Argument Parser (python argparse like) GitHub - junstar92/argparse: C++ (python-argparse-like) Argument Parser C++ (python-argparse-like) Argument Parser. Contribute to junstar92/argparse development by creating an account on GitHub. github.com C++에서 파이썬의 argparse와 유사하게 커맨드라인 인자를 읽을 수 있는 파서를 구현해봤습니다. 파이썬의 argparse와 유사하게 사용할 수 있습니다. 아직 업데이트 중이어서 약간 바뀔 가능성은 있습니다. 기본적은 사용법은 아래와 같습니다. #include #include int main(int argc, char** argv) { a.. 2024. 1. 2. [C++] Tuple 구현 Reference Ch 25, C++ Templates The Complete Guide Contents Basic Tuple Design Basic Tuple Operations Tuple Algorithms Expanding Tuples Optimizing Tuple 튜플은 실행 프로그램 내의 타입 리스트가 표현된 것이라고 볼 수 있다. 예를 들어, 타입 리스트 Typelist이 컴파일 시간에 조작할 수 있는 int, double, std::string을 가진 타입의 시퀀스를 나타내는 것잉라면 Tuple은 실행 시간에 조작할 수 있는 int, double, std::string에 대한 저장 공간을 나타낸다. 이번 포스팅에서는 C++11에 도입된 std::tuple과 유사한 동작하도록 간략한 버전의 T.. 2024. 1. 1. 이전 1 2 3 4 ··· 21 다음