original_performance_takehome: When the interview is a scheduler

Anthropic's original performance take-home strips away compiler magic, exposes the bottlenecks, and asks whether you can fit real work into a rigid machine.

10 min read • View on GitHub • More from anthropics

A careful hand rearranges pegs across a clockwork workbench with many narrow lanes, gears, and loading chutes. The scene explains the article's core idea, that the challenge is about packing work into scarce execution slots rather than finding a new algorithm.
The puzzle is not invention. It is placement.
Key Takeaways

This repo is not a puzzle about clever recursion or a trick data structure. It is a miniature performance lab. The challenge is to make a slow kernel faster on a machine that has very specific limits, and to do it without changing the rules of the game.

A take-home built around scarcity

Anthropic's original performance take-home feels unusual because it does not ask candidates to prove they know an algorithm. It asks whether they can read a machine, find the bottleneck, and schedule around it. The repo is deliberately small, but the evaluation is strict: correctness first, then cycle count, then how well you used the machine's slots.

This repo contains a version of Anthropic's original performance take-home, before Claude Opus 4.5 started doing better than humans given only 2 hours.

Anthropic (via Repository README), Project Owner/Maintainer · Anthropic README

That line reframes the project. It is not just an interview artifact. It is a benchmark that sits at the point where hiring, systems thinking, and model capability all collide.

If you optimize below 1487 cycles, beating Claude Opus 4.5's best performance at launch, email us at performance-recruiting@anthropic.com with your code (and ideally a resume) so we can be appropriately impressed, especially if you get near the best solution we've seen.

Anthropic (via Repository README), Project Owner/Maintainer · Anthropic README

What makes it different

Most coding assessments reward the right answer. This one rewards the right schedule. The simulated machine exposes a custom VLIW layout with 12 ALU slots, 6 vector ALU slots, 2 load slots, 2 store slots, and 1 flow slot per cycle. If you leave lanes empty, the score tells on you.

A close-up view of a mechanical pipeline where one oversized block jams a narrow channel while neighboring lanes keep moving. The image illustrates how the article's optimization problem is about routing around stalls and keeping the rest of the machine busy.
Good optimization keeps the rest of the machine moving while one piece waits.

The key abstraction is simple: instructions are bundled, then executed in parallel, and state changes land at the end of the cycle. That means the model behaves like hardware latching, not like a normal Python script. It is why the best solutions look less like elegant code and more like careful software pipelining.

The repo is organized like a lab bench. The rules are frozen, the kernel is editable, and the trace viewer makes stalls visible.

How the simulator works

The simulator is compact on purpose. A machine cycle reads a dictionary of engines and their operations, executes the whole bundle, and applies the resulting writes at the end of the cycle. That gives the optimizer room to overlap loads, stores, scalar work, and vector work inside one instruction window.

The other important detail is vector width. The repo defines VLEN = 8, so the vector path is not decorative. It is part of the real speedup story, along with manual instruction packing through the builder layer. The starter path uses a simple helper that is intentionally inefficient, which makes the optimization target obvious.

Why the trace viewer matters

watch_trace.py is the kind of tooling that quietly changes the quality of an interview. It turns the simulator into a timeline, proxies that trace into Perfetto, and auto-expands the view so idle lanes and pipeline stalls are hard to miss. That means candidates do not have to infer performance from a score alone. They can see the machine wasting cycles.

How it compares

AssessmentWhat it measuresWhat it rewards
LeetCode or HackerRankAlgorithm choice and correctness under time pressureClean proof of a known pattern
SPEC CPU or GeekbenchHardware throughput on standardized workloadsThe machine itself
Anthropic's performance take-homeCycle packing on a fixed simulated VLIW machineManual scheduling, trace reading, and disciplined optimization

That contrast is the whole point. The repo is closer to a controlled systems experiment than a trivia test. It forces a candidate to show how they think when the answer is not hidden in asymptotics, but in the unused slots between real operations.