Breaking Dependencies - The Visitor Design Pattern in Cpp
summary
Argues the Visitor pattern tradeoff with concrete code and microbenchmarks: classic visitor uses two virtual calls per operation and suffers large slowdowns; a modern std::variant-based visitor uses value semantics, avoids heaps and virtuals, and runs faster in the presented benchmark; an alternate mpark::variant implementation is fastest. Benchmarks run on 10,000 mixed shapes with 2,500 translate operations, tested on GCC and Clang. Also demonstrates an acyclic (dynamic_cast) visitor that is functionally possible but “terribly slow,” so the variant approach works and is recommended.
AI-written summary · about
chapters (11)
- 0:00The problem with enums
- 12:43Object-oriented solution
- 17:29The classic visitor pattern
- 21:18Visitor pattern in code
- 26:27Modern visitor with variant
- 31:17Modern visitor benefits
- 35:48Performance comparisons
- 39:25Classic vs modern visitor
- 44:25Advanced visitor techniques
- 49:28Visitor pattern summary
- 55:38Q&A session
related talks
49mApplied Modern C++: beyond type erasure and visitor pattern
57mDesign Patterns - The Most Common Misconceptions (2 of N)
49mEnough TMP to write a Variant
57mHow to Design a Slimmer Vector of Variants in C++
01h 07mDependency Injection Patterns: Efficiency and Usability
41mEnough TMP to write a Variant
01h 05mThe Imperatives Must Go!
01h 20mRevisiting C++ Observers: Spooky Action at a Distance
