Abseil Blog & Tips
Battle-tested, Mom-approved
- 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
- Performance Tip of the Week #97: Virtuous ecosystem cycles
- Performance Tip of the Week #99: Illuminating the processor core with llvm-mca
- Performance Tip of the Week #98: Measurement has an ROI
- Performance Tip of the Week #26: Fixing things with hashtable profiling
- Performance Tip of the Week #95: Spooky action at a distance
- Performance Tip of the Week #94: Decision making in a data-imperfect world
- Performance Tip of the Week #93: Robots never sleep
- Performance Tip of the Week #90: How to estimate
2024 13
- Performance Tip of the Week #88: Measurement methodology: Avoid the jelly beans trap
- Performance Tip of the Week #87: Two-way doors
- Tip of the Week #234: Pass by Value, by Pointer, or by Reference?
- Tip of the Week #232: When to Use auto for Variable Declarations
- Tip of the Week #231: Between Here and There: Some Minor Overlooked Algorithms
- Performance Tip of the Week #83: Reducing memory indirections
- Performance Tip of the Week #79: Make at most one tradeoff at a time
- Performance Tip of the Week #72: Optimizing optimization
- Performance Tip of the Week #62: Identifying and reducing memory bandwidth needs
- Tip of the Week #197: Reader Locks Should Be Rare
- Tip of the Week #229: Ranked Overloads for Template Metaprogramming
- Tip of the Week #227: Be Careful with Empty Containers and Unsigned Arithmetic
- Tip of the Week #224: Avoid vector.at()
2023 15
- Performance Tip of the Week #75: How to microbenchmark
- Performance Tip of the Week #74: Avoid sweeping street lights under rugs
- Performance Tip of the Week #70: Defining and measuring optimization success
- Performance Tip of the Week #60: In-process profiling: lessons learned
- Performance Tip of the Week #64: More Moore with better API design
- Performance Tip of the Week #52: Configuration knobs considered harmful
- Performance Tip of the Week #7: Optimizing for application productivity
- Abseil Breaking Change Policy Update
- Perf Tips
- Performance Tip of the Week #9: Optimizations past their prime
- Performance Tip of the Week #53: Precise C++ benchmark measurements with Hardware Performance Counters
- Performance Tip of the Week #39: Beware microbenchmarks bearing gifts
- Performance Tip of the Week #21: Improving the efficiency of your regular expressions
- Tip of the Week #198: Tag Types
- Tip of the Week #218: Designing Extension Points With FTADLE
2022 7
2021 1
2020 19
- Tip of the Week #188: Be Careful With Smart-Pointer Function Parameters
- Tip of the Week #187: std::unique_ptr Must Be Moved
- Tip of the Week #186: Prefer to Put Functions in the Unnamed Namespace
- Abseil Platform Support Update
- Tip of the Week #76: Use absl::Status
- Tip of the Week #5: Disappearing Act
- Tip of the Week #181: Accessing the value of a StatusOr<T>
- Tip of the Week #165: if and switch statements with initializers
- Tip of the Week #116: Keeping References on Arguments
- Abseil Status
- Tip of the Week #140: Constants: Safe Idioms
- Tip of the Week #177: Assignability vs. Data Member Types
- Tip of the Week #176: Prefer Return Values to Output Parameters
- Tip of the Week #175: Changes to Literal Constants in C++14 and C++17.
- Tip of the Week #173: Wrapping Arguments in Option Structs
- Tip of the Week #172: Designated Initializers
- Tip of the Week #171: Avoid Sentinel Values
- Tip of the Week #163: Passing std::optional parameters
- Announcing TCMalloc
2019 17
- Tip of the Week #108: Avoid std::bind
- Tip of the Week #166: When a Copy is not a Copy
- Tip of the Week #146: Default vs Value Initialization
- Tip of the Week #168: inline Variables
- Tip of the Week #161: Good Locals and Bad Locals
- Abseil Random
- Introducing Abseil Options
- Tip of the Week #182: Initialize Your Ints!
- Tip of the Week #180: Avoiding Dangling References
- Tip of the Week #158: Abseil Associative containers and contains()
- Tip of the Week #147: Use Exhaustive switch Statements Responsibly
- B-tree Ordered Containers
- Tip of the Week #90: Retired Flags
- Tip of the Week #45: Avoid Flags, Especially in Library Code
- Tip of the Week #103: Flags Are Globals
- Abseil Flags
- Abseil Support for CMake
2018 32
- Automated Upgrade Tooling for Abseil
- CppCon 2018: Modern C++ Design
- Civil Time in Abseil
- Tip of the Week #153: Don't Use using-directives
- Tip of the Week #152: AbslHashValue and You
- Tip of the Week #144: Heterogeneous Lookup in Associative Containers
- Tip of the Week #136: Unordered Containers
- Swiss Tables and absl::Hash
- Abseil Python Docs are Here!
- Clang-Tidy Checks for Abseil
- Coroutine Types
- The Abseil str_format Library
- Long-Term Support (LTS) Branches
- Revisiting Regular Types
- Abseil No Longer Depends on CCTZ
- Tip of the Week #149: Object Lifetimes vs. = delete
- Tip of the Week #148: Overload Sets
- Tip of the Week #117: Copy Elision and Pass-by-value
- Tip of the Week #24: Copies, Abbrv.
- Tip of the Week #120: Return Values are Untouchable
- Tip of the Week #11: Return Policy
- Tip of the Week #143: C++11 Deleted Functions ( = delete )
- Tip of the Week #141: Beware Implicit Conversions to bool
- What Should Go Into the C++ Standard Library
- Tip of the Week #93: using absl::Span
- Tip of the Week #61: Default Member Initializers
- Tip of the Week #134: make_unique and private Constructors.
- Tip of the Week #88: Initialization: =, (), and {}
- Tip of the Week #142: Multi-parameter Constructors and explicit
- Tip of the Week #59: Joining Tuples
- Tip of the Week #36: New Join API
- Tip of the Week #10: Splitting Strings, not Hairs
2017 27
- Tip of the Week #74: Delegating and Inheriting Constructors
- Tip of the Week #42: Prefer Factory Functions to Initializer Methods
- Tip of the Week #131: Special Member Functions and `= default`
- Tip of the Week #123: absl::optional and std::unique_ptr
- Tip of the Week #130: Namespace Naming
- Tip of the Week #119: Using-declarations and namespace aliases
- CppCon 2017: How to Break an ABI
- Tip of the Week #126: `make_unique` is the new `new`
- Tip of the Week #109: Meaningful `const` in Function Declarations
- Tip of the Week #99: Nonmember Interface Etiquette
- Tip of the Week #65: Putting Things in their Place
- Tip of the Week #112: emplace vs. push_back
- Tip of the Week #49: Argument-Dependent Lookup
- Tip of the Week #135: Test the Contract, not the Implementation
- Tip of the Week #107: Reference Lifetime Extension
- Tip of the Week #101: Return Values, References, and Lifetimes
- CppCon 2017: 'A Type, by Any Other Name'
- Tip of the Week #94: Callsite Readability and bool Parameters
- Tip of the Week #86: Enumerating with Class
- Tip of the Week #64: Raw String Literals
- CppCon 2017: The design of absl::StrCat
- Tip of the Week #77: Temporaries, Moves, and Copies
- Tip of the Week #55: Name Counting and unique_ptr
- Tip of the Week #122: Test Fixtures, Clarity, and Dataflow
- CppCon 2017: C++ as a 'Live at Head' Language
- Welcome to Abseil!
- Tip of the Week #1: string_view