The Curious Engineer

All blogs / C++

Preshing on Programming

preshing.com

C is a simple language. You’re only allowed to have one function with each name. C++, on the other hand, gives you much more flexibility: You can have multiple functions …

C++ConcurrencyPerformance / optimizationEngineering blogs

Posts
74 from 4 May 2011 to 15 Mar 2021
Posting
quiet since 2021
Kind
personal blog
Feed
https://preshing.com/feed

2021 1

  1. How C++ Resolves a Function Call

2020 5

  1. Flap Hero Code Review
  2. A Small Open Source Game In C++
  3. Automatically Detecting Text Encodings in C++
  4. I/O in Plywood
  5. A New Cross-Platform Open Source C++ Framework

2018 2

  1. A Flexible Reflection System in C++: Part 2
  2. A Flexible Reflection System in C++: Part 1

2017 5

  1. How to Write Your Own C++ Game Engine
  2. Can Reordering of Release/Acquire Operations Introduce Deadlock?
  3. Here's a Standalone Cairo DLL for Windows
  4. Learn CMake's Scripting Language in 15 Minutes
  5. How to Build a CMake-Based Project

2016 4

  1. Using Quiescent States to Reclaim Memory
  2. Leapfrog Probing
  3. A Resizable Concurrent Map
  4. New Concurrent Hash Maps for C++

2015 3

  1. You Can Do Any Kind of Atomic Read-Modify-Write Operation
  2. Safe Bitfields in C++
  3. Semaphores are Surprisingly Versatile

2014 7

  1. C++ Has Become More Pythonic
  2. Fixing GCC's Implementation of memory_order_consume
  3. How to Build a GCC Cross-Compiler
  4. How to Install the Latest GCC on Windows
  5. My Multicore Talk at CppCon 2014
  6. The Purpose of memory_order_consume in C++11
  7. What Is a Bitcoin, Really?

2013 12

  1. Bitcoin Address Generator in Obfuscated Python
  2. Acquire and Release Fences Don’t Work the Way You’d Expect
  3. Double-Checked Locking is Fixed In C++11
  4. Acquire and Release Fences
  5. The Synchronizes-With Relation
  6. The Happens-Before Relation
  7. Atomic vs. Non-Atomic Operations
  8. The World’s Simplest Lock-Free Hash Table
  9. A Lock-Free… Linear Search?
  10. Introducing Mintomic: A Small, Portable Lock-Free API
  11. View Your Filesystem History Using Python
  12. This Hash Table Is Faster Than a Judy Array

2012 17

  1. How to Generate a Sequence of Unique Random Integers
  2. Arithmetic Encoding Using Fixed-Point Math
  3. Arithmetic Coding and the 1MB Sorting Problem
  4. 1MB Sorting Explained
  5. Here’s Some Working Code to Sort One Million 8-Digit Numbers in 1MB of RAM
  6. This Is Why They Call It a Weakly-Ordered CPU
  7. Weak vs. Strong Memory Models
  8. Acquire and Release Semantics
  9. Memory Barriers Are Like Source Control Operations
  10. Memory Ordering at Compile Time
  11. An Introduction to Lock-Free Programming
  12. Lightweight In-Memory Logging
  13. Memory Reordering Caught in the Act
  14. How to Remove Camera Shake from iPhone 4S Videos
  15. Implementing a Recursive Mutex
  16. Roll Your Own Lightweight Mutex
  17. A Look Back at Single-Threaded CPU Performance

2011 18

  1. A C++ Profiling Module for Multithreaded APIs
  2. Always Use a Lightweight Mutex
  3. Locks Aren’t Slow; Lock Contention Is
  4. How to Generate Random Timings for a Poisson Process
  5. High-Resolution Mandelbrot in Obfuscated Python
  6. Timing Your Code Using Python’s “with” Statement
  7. The Python “with” Statement by Example
  8. Penrose Tiling Explained
  9. Penrose Tiling in Obfuscated Python
  10. xkcd Password Generator
  11. The Cost of _SECURE_SCL
  12. The Cost of Buffer Security Checks in Visual C++
  13. The Cost of Enabling Exception Handling
  14. Finding Bottlenecks by Random Breaking
  15. The Windows Heap Is Slow When Launched from the Debugger
  16. Visual C++ Performance Pitfalls
  17. Hash Table Performance Tests
  18. Hash Collision Probabilities