Skip to content

Commit 04c0cb3

Browse files
committed
reorg
1 parent ce41519 commit 04c0cb3

File tree

1 file changed

+24
-42
lines changed

1 file changed

+24
-42
lines changed

cppcon2025/cppcon_2025_slides.md

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,19 @@ From neuroscience: systematically remove parts to understand function
559559
1. **Consteval**: Compile-time field name processing
560560
2. **SIMD String Escaping**: Vectorized character checks
561561
3. **Fast Integer Serialization**: Optimized number handling
562-
4. **Branch Prediction Hints**: CPU pipeline optimization
563-
5. **Buffer Growth Strategy**: Smart memory allocation
562+
563+
564+
---
565+
566+
# Combined Performance Impact
567+
568+
569+
| Optimization | Twitter Contribution | CITM Contribution |
570+
|--------------|---------------------|-------------------|
571+
| **Consteval** | +100% (2.00x) | +141% (2.41x) |
572+
| **SIMD Escaping** | +42% (1.42x) | +4% (1.04x) |
573+
| **Fast Digits** | +6% (1.06x) | +34% (1.34x) |
574+
564575
565576
---
566577
@@ -648,7 +659,7 @@ int fast_digit_count_64(uint64_t x) {
648659
static uint64_t table[] = {9,
649660
99,
650661
999,
651-
...
662+
//...
652663
9999999999999999ULL,
653664
99999999999999999ULL,
654665
999999999999999999ULL,
@@ -673,57 +684,28 @@ std::to_string(value).length(); // Allocates string just to count!
673684

674685
---
675686

676-
# Optimizations #4 & #5: Branch Hints & Buffer Growth
677-
678-
**Branch Prediction:**
679-
```cpp
680-
if (UNLIKELY(buffer_full)) { // CPU knows this is rare
681-
grow_buffer();
682-
}
683-
// CPU optimizes for this path
684-
```
685-
686-
---
687-
688-
# Combined Performance Impact
689-
690-
**All Optimizations Together:**
691-
692-
| Optimization | Twitter Contribution | CITM Contribution |
693-
|--------------|---------------------|-------------------|
694-
| **Consteval** | +100% (2.00x) | +141% (2.41x) |
695-
| **SIMD Escaping** | +42% (1.42x) | +4% (1.04x) |
696-
| **Fast Digits** | +6% (1.06x) | +34% (1.34x) |
697-
| **Branch Hints** | +1% | +5% |
698-
| **Buffer Growth** | -0.4% | +2% |
699-
| **TOTAL** | **~2.9x faster** | **~3.4x faster** |
687+
# What about compilation time?
700688

689+
....
701690

702691
---
703692

704-
**From Baseline to Optimized:**
705-
- Twitter: ~1,100 MB/s → 3,211 MB/s
706-
- CITM: ~700 MB/s → 2,360 MB/s
707693

708-
---
694+
# Key Technical Insights
709695

696+
1. **With reflection and concepts**
697+
- your code becomes shorter
698+
- your code becomes more general
710699

711-
# Key Technical Insights
700+
2. Compilation time not much slower.
712701

713-
1. **Compile-Time optimizations can be awesome**
702+
3. **Compile-Time optimizations can be awesome**
714703
- Consteval: 2-2.6x speedup alone
715704
- C++26 reflection enables unprecedented optimization
716705

717-
2. **SIMD Everywhere**
718-
- String operations benefit hugely
719-
720-
3. **Avoid Hidden Costs**
721-
- Hidden allocations: `std::to_string()`
722-
723-
<!-- - Hidden divisions: `log10(value)`
724-
- Hidden mispredictions: rare conditions -->
706+
4. **SIMD** String operations benefit
725707

726-
4. **Every Optimization Matters**
708+
5. **Every Optimization Matters**
727709
- Small gains compound into huge improvements
728710

729711

0 commit comments

Comments
 (0)