The Curious Engineer

All blogs / C++

Abseil Blog & Tips

abseil.io

Battle-tested, Mom-approved

C++Performance / optimization

Posts
139 from 26 Sep 2017 to 27 Nov 2025
Posting
now and then (1 in the last year)
Kind
project news
Feed
https://abseil.io/feed.xml

2025 8

  1. Performance Tip of the Week #97: Virtuous ecosystem cycles
  2. Performance Tip of the Week #99: Illuminating the processor core with llvm-mca
  3. Performance Tip of the Week #98: Measurement has an ROI
  4. Performance Tip of the Week #26: Fixing things with hashtable profiling
  5. Performance Tip of the Week #95: Spooky action at a distance
  6. Performance Tip of the Week #94: Decision making in a data-imperfect world
  7. Performance Tip of the Week #93: Robots never sleep
  8. Performance Tip of the Week #90: How to estimate

2024 13

  1. Performance Tip of the Week #88: Measurement methodology: Avoid the jelly beans trap
  2. Performance Tip of the Week #87: Two-way doors
  3. Tip of the Week #234: Pass by Value, by Pointer, or by Reference?
  4. Tip of the Week #232: When to Use auto for Variable Declarations
  5. Tip of the Week #231: Between Here and There: Some Minor Overlooked Algorithms
  6. Performance Tip of the Week #83: Reducing memory indirections
  7. Performance Tip of the Week #79: Make at most one tradeoff at a time
  8. Performance Tip of the Week #72: Optimizing optimization
  9. Performance Tip of the Week #62: Identifying and reducing memory bandwidth needs
  10. Tip of the Week #197: Reader Locks Should Be Rare
  11. Tip of the Week #229: Ranked Overloads for Template Metaprogramming
  12. Tip of the Week #227: Be Careful with Empty Containers and Unsigned Arithmetic
  13. Tip of the Week #224: Avoid vector.at()

2023 15

  1. Performance Tip of the Week #75: How to microbenchmark
  2. Performance Tip of the Week #74: Avoid sweeping street lights under rugs
  3. Performance Tip of the Week #70: Defining and measuring optimization success
  4. Performance Tip of the Week #60: In-process profiling: lessons learned
  5. Performance Tip of the Week #64: More Moore with better API design
  6. Performance Tip of the Week #52: Configuration knobs considered harmful
  7. Performance Tip of the Week #7: Optimizing for application productivity
  8. Abseil Breaking Change Policy Update
  9. Perf Tips
  10. Performance Tip of the Week #9: Optimizations past their prime
  11. Performance Tip of the Week #53: Precise C++ benchmark measurements with Hardware Performance Counters
  12. Performance Tip of the Week #39: Beware microbenchmarks bearing gifts
  13. Performance Tip of the Week #21: Improving the efficiency of your regular expressions
  14. Tip of the Week #198: Tag Types
  15. Tip of the Week #218: Designing Extension Points With FTADLE

2022 7

  1. Tip of the Week #3: String Concatenation and operator+ vs. StrCat()
  2. Tip of the Week #215: Stringifying Custom Types with AbslStringify()
  3. Tip of the Week #18: String Formatting with Substitute
  4. Tip of the Week #124: absl::StrFormat()
  5. Abseil Stringify
  6. Abseil Logging
  7. The Danger of Atomic Operations

2021 1

  1. SWE Book Freely Available

2020 19

  1. Tip of the Week #188: Be Careful With Smart-Pointer Function Parameters
  2. Tip of the Week #187: std::unique_ptr Must Be Moved
  3. Tip of the Week #186: Prefer to Put Functions in the Unnamed Namespace
  4. Abseil Platform Support Update
  5. Tip of the Week #76: Use absl::Status
  6. Tip of the Week #5: Disappearing Act
  7. Tip of the Week #181: Accessing the value of a StatusOr<T>
  8. Tip of the Week #165: if and switch statements with initializers
  9. Tip of the Week #116: Keeping References on Arguments
  10. Abseil Status
  11. Tip of the Week #140: Constants: Safe Idioms
  12. Tip of the Week #177: Assignability vs. Data Member Types
  13. Tip of the Week #176: Prefer Return Values to Output Parameters
  14. Tip of the Week #175: Changes to Literal Constants in C++14 and C++17.
  15. Tip of the Week #173: Wrapping Arguments in Option Structs
  16. Tip of the Week #172: Designated Initializers
  17. Tip of the Week #171: Avoid Sentinel Values
  18. Tip of the Week #163: Passing std::optional parameters
  19. Announcing TCMalloc

2019 17

  1. Tip of the Week #108: Avoid std::bind
  2. Tip of the Week #166: When a Copy is not a Copy
  3. Tip of the Week #146: Default vs Value Initialization
  4. Tip of the Week #168: inline Variables
  5. Tip of the Week #161: Good Locals and Bad Locals
  6. Abseil Random
  7. Introducing Abseil Options
  8. Tip of the Week #182: Initialize Your Ints!
  9. Tip of the Week #180: Avoiding Dangling References
  10. Tip of the Week #158: Abseil Associative containers and contains()
  11. Tip of the Week #147: Use Exhaustive switch Statements Responsibly
  12. B-tree Ordered Containers
  13. Tip of the Week #90: Retired Flags
  14. Tip of the Week #45: Avoid Flags, Especially in Library Code
  15. Tip of the Week #103: Flags Are Globals
  16. Abseil Flags
  17. Abseil Support for CMake

2018 32

  1. Automated Upgrade Tooling for Abseil
  2. CppCon 2018: Modern C++ Design
  3. Civil Time in Abseil
  4. Tip of the Week #153: Don't Use using-directives
  5. Tip of the Week #152: AbslHashValue and You
  6. Tip of the Week #144: Heterogeneous Lookup in Associative Containers
  7. Tip of the Week #136: Unordered Containers
  8. Swiss Tables and absl::Hash
  9. Abseil Python Docs are Here!
  10. Clang-Tidy Checks for Abseil
  11. Coroutine Types
  12. The Abseil str_format Library
  13. Long-Term Support (LTS) Branches
  14. Revisiting Regular Types
  15. Abseil No Longer Depends on CCTZ
  16. Tip of the Week #149: Object Lifetimes vs. = delete
  17. Tip of the Week #148: Overload Sets
  18. Tip of the Week #117: Copy Elision and Pass-by-value
  19. Tip of the Week #24: Copies, Abbrv.
  20. Tip of the Week #120: Return Values are Untouchable
  21. Tip of the Week #11: Return Policy
  22. Tip of the Week #143: C++11 Deleted Functions ( = delete )
  23. Tip of the Week #141: Beware Implicit Conversions to bool
  24. What Should Go Into the C++ Standard Library
  25. Tip of the Week #93: using absl::Span
  26. Tip of the Week #61: Default Member Initializers
  27. Tip of the Week #134: make_unique and private Constructors.
  28. Tip of the Week #88: Initialization: =, (), and {}
  29. Tip of the Week #142: Multi-parameter Constructors and explicit
  30. Tip of the Week #59: Joining Tuples
  31. Tip of the Week #36: New Join API
  32. Tip of the Week #10: Splitting Strings, not Hairs

2017 27

  1. Tip of the Week #74: Delegating and Inheriting Constructors
  2. Tip of the Week #42: Prefer Factory Functions to Initializer Methods
  3. Tip of the Week #131: Special Member Functions and `= default`
  4. Tip of the Week #123: absl::optional and std::unique_ptr
  5. Tip of the Week #130: Namespace Naming
  6. Tip of the Week #119: Using-declarations and namespace aliases
  7. CppCon 2017: How to Break an ABI
  8. Tip of the Week #126: `make_unique` is the new `new`
  9. Tip of the Week #109: Meaningful `const` in Function Declarations
  10. Tip of the Week #99: Nonmember Interface Etiquette
  11. Tip of the Week #65: Putting Things in their Place
  12. Tip of the Week #112: emplace vs. push_back
  13. Tip of the Week #49: Argument-Dependent Lookup
  14. Tip of the Week #135: Test the Contract, not the Implementation
  15. Tip of the Week #107: Reference Lifetime Extension
  16. Tip of the Week #101: Return Values, References, and Lifetimes
  17. CppCon 2017: 'A Type, by Any Other Name'
  18. Tip of the Week #94: Callsite Readability and bool Parameters
  19. Tip of the Week #86: Enumerating with Class
  20. Tip of the Week #64: Raw String Literals
  21. CppCon 2017: The design of absl::StrCat
  22. Tip of the Week #77: Temporaries, Moves, and Copies
  23. Tip of the Week #55: Name Counting and unique_ptr
  24. Tip of the Week #122: Test Fixtures, Clarity, and Dataflow
  25. CppCon 2017: C++ as a 'Live at Head' Language
  26. Welcome to Abseil!
  27. Tip of the Week #1: string_view