Sitemap - 2021 - Software Bits Newsletter

std::move

Default arguments.

Static global vs local variables.

operator+ vs string append

max vs if

shared_ptr vs unique_ptr.

Fastest way to iterate in Python.

Negative subscripts.

Python dataclasses.

Python slots.

mm_prefetch

Recursive vs iterative merge sort.

Recursive vs iterative.

@staticmethod vs instance method

Specialized data structures.

Standing on the shoulders of giants.

Linked list vs array list.

Syntactic sugar.

Pick your types carefully.

To bit or not to bit.

Optimize for the common case

Calloc vs malloc

Zero-cost interfaces?

Likely branches first.

Manual hoisting in 2021.

Branches are always evil?

Functional programming.

go:embed

Tagged pointers.

Using profile to improve performance.

Math to the rescue.

Efficient packing.

Listening to LLVM.

Size matters.

Impact of undefined behavior on performance.

Enjoy the view.

Avoid unnecessary work.

Avoid unnecessary work.

Know your data.

C++ function call overhead.

Function call overhead.

Inline assembly.

Taking advantage of the hardware support.

Communicate purpose.

Random vs sequential memory access.

Old pattern powering modern tech.

A case of an overloaded abstraction.

Non-zero cost abstractions.

Bit-testing on ARM64.

Bit-testing.

UNIX domain vs TCP socket.

Function call fusion.

Avoiding allocations at all costs.

Saving space with dictionary arrays.

Parallel arrays in Rust.

Parallel arrays performance.

Column-oriented processing.

Hunting for the lost blockchain treasures.

We still know our code better than compilers.

EIP-55: Mixed-case checksum address encoding.

Trading memory for fewer allocations.

Don't leave easy performance wins on the table.

Trust performance advice... but verify.

Short stories on software design and performance.