Mathematical Purity vs. Engineering Reality
Why is this Mathematics meme funny?
Level 1: Just Benchmark It
Imagine you and your friend are trying to see who can eat the most candy. Your friend starts talking about a really far-future scenario: “What if I kept eating candy forever? In the long run, I could eat an infinite amount!” That’s like the first part of the meme – it’s thinking about something in an almost endless, make-believe way (like imagining eating candy non-stop into infinity). It’s kind of fancy talk and doesn’t really help you now. Now picture you instead saying, “Forget forever. Here, let’s just see how many candies you can eat right now out of this big bowl of 10,000 candies!” That’s like the second part of the meme – it’s doing a real test with a big but actual number of candies.
The funny bit is that your friend’s super theoretical idea (infinite candy – wow!) is sort of impractical, and you choosing a huge but real number (10,000 candies) is a much more direct way to find out who eats more. In the meme, Drake is basically choosing the “let’s actually try it with a big number and see” approach over the “imagine if we went on forever” approach. We find it funny because sometimes people get caught up in super big, abstract ideas, when often it’s more useful (and quicker) to just try things out in real life. It’s like saying: why dream about infinity, when you can learn a lot from a real big example right here and now? Drake is just giving a big thumbs-up to keeping it real and testing it out, which is something even a kid doing a science experiment or a fun challenge can appreciate – sometimes, just do it for real beats talking about it endlessly!
Level 2: Benchmarks Over Proofs
Let’s decode the joke in simpler terms. The meme uses Drake’s Hotline Bling template – you know, the one where in the first image Drake is looking away all unimpressed, and in the second image he’s smiling and pointing because he likes what he sees. It’s a visual way to show a preference between two things. Here’s what those two things are in this meme:
In the top panel, the text says “$\lim_{x \to \infty} f(x)$”. This is math notation for “the limit of f(x) as x approaches infinity.” In plain English, it means you’re interested in what happens to the function $f(x)$ when $x$ gets really, really large (approaching infinity). If you’ve taken calculus or an algorithms class, you might recall taking limits or talking about Big O notation – that’s exactly what this is referencing. It’s basically a symbol of theoretical analysis: when computer scientists analyze how an algorithm performs, they often imagine making the input size bigger and bigger without any bound, to see the eventual trend. For example, saying an algorithm is $O(n^2)$ comes from understanding that as $n$ (the input size) grows, the work the algorithm does grows proportional to $n^2$. The $\lim_{x\to\infty}$ part is a way of saying “if I take $x$ to be extremely large (towards infinity), what part of $f(x)$ dominates?” It ignores small details and constant multipliers and looks at the overall growth rate. So that top panel stands for doing formal AlgorithmComplexityAnalysis – thinking about performance in a very Big Picture way, using math and limits. Drake is rejecting this in the meme, so picture him going “Nope!” to spending time on fancy math limits.
In the bottom panel, the text says “$f(10000)$”. This means “the value of f(x) at $x = 10000$.” In other words, instead of worrying about what happens as $x$ goes to infinity, it just plugs in a specific big number (10000) into the function. If we translate that to programming or algorithms, this is like saying: “Rather than theorize about infinitely large inputs, let’s just run the function with an input of size 10,000 and see what happens.” It represents doing a benchmark or test run at some large, but real, input size. In software, a benchmark means running a piece of code with certain inputs and measuring things like how long it takes or how much memory it uses. So $f(10000)$ implies we are directly measuring or observing the function’s result or performance at n = 10k. Drake is pointing happily at this, meaning he approves of this approach.
So, the two approaches being compared are:
- Formal limit / Big O style analysis (theory) – symbolized by $\lim_{x\to\infty} f(x)$ – which is all about what happens when the input grows super large (approaching infinity). This is something you learn in computer science theory: we say things like “this algorithm runs in linear time” or “that algorithm is quadratic time,” essentially using infinity-thinking to classify algorithms.
- Concrete benchmarking (practical) – symbolized by just calculating $f(10000)$ – which is about testing the function on a specific large input to see actual performance numbers. This is what you’d do in a real project: time the function on, say, 10,000 items to see if it’s fast enough.
Now, why is this funny or interesting to developers? It’s because there’s often a gap between what theory tells us and what really happens in practice. In theory (with that limit analysis), one algorithm might seem better because eventually, for insanely large inputs, it grows more slowly. But in practice, we rarely use infinitely large inputs – we use something like 10000, or maybe a few million, depending on the application. And it turns out that sometimes the theoretically “better” algorithm isn’t faster for those realistic sizes! This can happen due to constant factors and other overhead. Let’s explain that:
Big O notation (which comes from that lim as x→∞ idea) deliberately ignores constants. If one algorithm takes $2 \times n$ steps and another takes $0.5 \times n$ steps, both are considered $O(n)$ – linear time – even though one does four times more work for the same n. Big O doesn’t care about that 2 vs 0.5 difference; it only cares about the fact that work grows in proportion to n for both. Similarly, an algorithm doing $n^2$/2 operations and one doing $10 \times n^2$ operations are both $O(n^2)$ in Big O terms, even though one is five times slower than the other for the same n due to the constant 10. That’s what we mean by constant factors: numbers like 2, 0.5, 10 – all the fixed multipliers or additive terms that Big O hides under the rug. In real life, those numbers absolutely affect speed! If algorithm A does 1000 basic operations for each element (maybe it has a heavy setup or uses a big constant-time calculation inside the loop) and algorithm B does 10 operations per element, even if both are “linear $O(n)$”, algorithm B will be 100x faster for any given n because 10 vs 1000 is a huge constant factor difference. But Big O analysis alone wouldn’t tell a beginner that – it treats them as the same category (linear).
Benchmarking catches those differences. If you actually run algorithm A and B on n=10000, you’ll measure the actual time or resource usage. Suppose A takes 0.001 seconds per element (so 1000 * 10000 * 0.001 = 10 seconds total for 10000 elements) and B takes 0.00001 seconds per element (10 * 10000 * 0.00001 = 0.1 seconds total). The benchmark results will scream out that B is much faster at n=10000. But if someone only looked at the Big O, they’d have thought “both are linear, so they’re roughly equal for large n” – which is misleading in this range. Only at some insanely large n (maybe n in the millions or more, if ever) would other factors possibly flip the story, if A’s algorithm had some other advantage.
The meme exaggerates this kind of situation. It’s basically saying a lot of us developers prefer to “just test it and see” rather than rely purely on abstract analysis. Many of us have seen cases where a theoretically slower approach worked better for our needs because our needs didn’t actually hit the huge scales where the theory would matter. For example:
- A simple search algorithm that checks each item one by one (linear search) might actually be faster for an array of size 10,000 than a more complex binary search algorithm (which is theoretically faster for large arrays, $O(\log n)$ vs $O(n)$) because 10,000 items isn’t that huge and the overhead of binary search (like complex branching and calculating mid indices) might not pay off until maybe 100,000 items or more. Up to 10k, the difference might be negligible or even favor the simpler method.
- An algorithm that’s $O(n^2)$, like a naive sorting method or brute force solution, might run in a blink for n = 100 or 1000 (which could be all you ever need in a small feature), so optimizing it to an $O(n \log n)$ or $O(n)$ method might be unnecessary work. If someone came and said “We should implement this fancy algorithm because it’s more scalable,” you might reply “Nah, it already runs in 0.05 seconds at n=1000, and we never go beyond that – let’s not overcomplicate.” Essentially, “nah, just benchmark it at n=1000 and you’ll see it’s fine.”
The Drake meme format communicates this in a lighthearted way. Drake says “no” to the abstract limit ($\lim_{x\to\infty}$) – meaning he’s not a fan of purely abstract reasoning here – and Drake says “yes” to $f(10000)$, meaning he approves of a concrete test. It’s poking fun at over-relying on theory. Of course, both approaches are useful, but the joke chooses the extreme stance for comedic effect.
For a junior developer or a student, this meme is a good reminder that:
- Big O notation and asymptotic thinking are great for understanding how algorithms scale in theory, but you should always remember they hide real-world details.
- Benchmarking (even simple tests) is important because it tells you the actual performance on real inputs, including all the constant factors and system effects.
The categories listed (CS_Fundamentals, Mathematics, Performance) are all in play here. This is indeed a fundamental computer science concept (analyzing algorithm complexity) which is mathematical in nature (using limits and growth rates), and it directly ties into software performance in practice (how fast something runs on input size 10000). The tags like RealWorldVsTheory and EngineeringTradeoffs underscore that developers often have to balance theoretical ideal vs practical reality. The tag benchmarks_over_proofs is basically the meme’s message: valuing empirical benchmarking data over purely theoretical proof of performance. And constant_factors_matter is the lesson: those little details you ignore in math can have big impact on actual speed.
So the meme is funny in a nerdy way: it’s like saying “Why bother with fancy math about infinity when I can just run the darn thing and see what happens at a big number like 10k?” It takes a somewhat complex idea (asymptotes and algorithmic complexity) and boils it down to a simple contrast that any programmer who’s done both theory and practice can smirk at. Even if you haven’t deeply studied complexity, you can get the general idea: one approach is super theoretical, the other is straightforward and experimental. It’s the classic scenario where an academic might want a proof, but an engineer just runs an experiment. And Drake’s expressions make that contrast very clear and humorous.
Level 3: Constant Factor Face-Off
For seasoned developers, this meme hits a nerve in the funniest way. It’s capturing that moment in a performance review or design discussion when someone proudly proclaims, “Algorithm A is $O(n)$ and algorithm B is $O(n^2)$, so obviously A scales better!”, and then the grizzled performance guru asks, “Sure, but have you actually benchmarked them at a realistic size?” Cue a bit of awkward silence – and then everyone watches as algorithm B (with the worse Big O on paper) runs faster for all practical input sizes we care about. 😅 This Drake two-panel perfectly encapsulates that Big O notation vs real-world performance showdown. The top panel (“lim as x→∞ f(x)” rejected) represents those high-minded arguments about how code will perform as the input size grows without bound. It’s what we learned in CS Fundamentals classes and what theoretical computer scientists emphasize – the elegant asymptotic view, where you compare algorithms by their dominant terms and assume n will eventually be enormous. The bottom panel (“f(10000)” embraced) is the pragmatic engineer’s stance: “Forget the hand-wavy infinity talk; show me the numbers for a decent-sized input right now.” It reflects a common sentiment in developer humor: the difference between how we talk about algorithms in academia versus how we validate them in industry.
The humor here leans on a shared experience: Real World vs Theory. In theory, algorithm A might be “better” for extremely large inputs, but in the real world, maybe input sizes rarely exceed 10k or 100k, and algorithm B with a higher complexity class could still outperform due to a lower constant cost or better use of modern hardware. We’ve all seen situations where an academically optimal solution turns out to be slower or just not worth the complexity for the inputs that actually occur in production. Perhaps you optimistically implemented a fancy divide-and-conquer algorithm with $O(n \log n)$ complexity, only to find that a simpler $O(n^2)$ approach ran faster for all $n$ up to a million because of your method’s huge setup cost and poor cache locality. Engineering trade-offs are rarely as simple as comparing Big O labels – constant factors, memory access patterns, parallel overhead, and even how code interacts with CPU caches can make or break performance. This meme’s punchline (“just benchmark it at n = 10k”) is basically the voice of that battle-scarred performance engineer on your team saying, “Prove it with data.” It’s the antidote to what we jokingly call premature asymptotics – placing blind faith in theoretical scaling before actually measuring if and when that theory pays off.
The Drake format itself – known formally as the drake_hotline_bling_template – is a cornerstone of meme culture for expressing preference. In countless memes, we see Drake in the first image waving his hand in rejection at something, and in the second image pointing approvingly at a preferred alternative. Here the rejected frame is “lim_{x→∞} f(x)”, which is essentially saying “taking the limit of f as x goes to infinity” – a concise way to evoke “doing asymptotic analysis.” In the approved frame we have “f(10000)”, a single evaluation at a large finite point. It’s a perfect limit_vs_large_constant comparison: Drake snubs the mathematically rigorous limit approach and instead endorses plugging in a big constant (10000) and seeing the result. For those in software engineering, this is immediately recognizable as a jab at how often we ditch formal proofs in favor of quick empirical benchmarks. We laugh because it’s true – we’ve been there! Someone might come fresh out of school quoting algorithm complexities, but the senior folks ask “okay, but how does it actually run on input size 10k or 100k in our system?” It’s practically a rite of passage in programming: discovering that a theoretically $O(n)$ algorithm can be slower than an $O(n^2)$ algorithm for every input size you will ever use, because that $O(n)$ algorithm has an enormous constant factor or poor use of the CPU. There’s even a well-worn industry saying capturing this dichotomy:
“In theory, theory and practice are the same. In practice, they are not.”
This meme precisely illustrates that quote. The “theory” part is focusing on $n \to \infty$ (and expecting elegant scalability), while the “practice” part is running it for a specific large $n$ and dealing with the messy reality of actual runtime numbers.
Let’s break down the elements so any developer can relate: The top caption could be any scenario where an engineer argues something like “Don’t worry, our solution scales in the long run, as n grows our method is better.” It’s that slide in a tech talk with a nice complexity graph or a limit formula, proclaiming eventual superiority. Drake’s disapproving face is basically the collective eye-roll of experienced engineers who know that eventual might be beyond any meaningful timeframe or dataset. The bottom caption is essentially the rebuttal: “We benchmarked it on a representative large input and here’s what actually happened.” Drake’s happy pointing means “Yes, this one! Actual data for a big input – that’s what we like.” It validates the approach of benchmarks_over_proofs: real measurements over purely theoretical wins.
In daily engineering practice, you’ll find a balance between these approaches. We do rely on Big O and asymptotic reasoning to guide initial decisions – it’s like a compass that tells us, “avoid algorithms that blow up exponentially, prefer polynomial or linear ones.” But once we’ve narrowed it down to a few plausible methods, the final decision often comes from testing them on real inputs. For example, choosing a sorting algorithm for a library: you might know that heapsort, mergesort, and quicksort are all $O(n \log n)$. The asymptotic analysis tells you they’re in the same class (and all much better than $O(n^2)$ sorts like bubble sort for large n). But which is fastest at n = 10k or n = 1,000,000 for typical data? That you find out by implementation and benchmarking – perhaps the one with the best constant factors or cache behavior wins. Many libraries (like Python’s sorting or Java’s, which use Timsort or dual-pivot quicksort) were chosen exactly by this empirical method: try it on realistic workloads and see which performs best, because constant factors and real data patterns decide the day. This is why we chuckle at “constant_factors_matter” – it’s a truth every programmer learns. You can brag that your algorithm is linear time, but if it does 1000 expensive operations per element, and someone else’s quadratic algorithm only does 1 cheap operation per pair, there’s a crossover point where yours isn’t actually faster until n is huge. That moment of realization — that Big O isn’t the whole story — is both humbling and kind of hilarious in hindsight, which is exactly what the meme pokes fun at.
The meme title text even quips about “Asymptotic elegance” versus brute-force benchmarking at 10k. This is speaking to a cultural divide: sometimes academic solutions are celebrated for their elegance, but an engineer might cheekily respond, “Nah, I prefer something that works fast now; save the elegant proof for the textbook.” It’s not that one or the other is absolutely correct — in fact, the best developers use both: theory to narrow the field and experiments to choose concretely. But the punchline exaggerates the preference for empirical data. We laugh because we recognize ourselves in it, especially during crunch times. Who hasn’t been in a late-night optimization session where somebody says, “Before we rewrite everything for algorithmic efficiency, let’s actually run a quick benchmark on a sizable input to see if it’s even worth it?” And nine times out of ten, that real data saves us from chasing phantom problems. The DeveloperHumor here is a gentle roast of those of us who might overhype asymptotic notation (sometimes fresh grads or self-proclaimed algorithm gurus) and a high-five to those who’ve learned, through many trials, that Performance Optimization is often about measuring real code under real conditions. Drake’s smug grin in the bottom panel is basically every senior engineer after running a straightforward test that upends the purely theoretical claim. It’s both vindication and a reminder not to get lost in theory alone.
In summary, at this “senior perspective” level, the meme is funny because it’s so relatable: it dramatizes the common scenario of RealWorldVsTheory in programming. We chuckle at Drake’s blunt dismissal of $\lim_{x\to\infty} f(x)$ because it mirrors our inner voice saying “I don’t have time for ivory-tower theory that doesn’t translate to my actual problem sizes.” And we cheer when he points to $f(10000)$, because getting real, concrete performance numbers is often the hero move in engineering stories. It’s a celebration of practicality wrapped in a math joke, reminding us that even the prettiest algorithm isn’t worthwhile until you’ve proven it where it counts – in the real world, at real input sizes, with real constraints. Constant factors can make or break you, so put aside the infinite limbo and test on 10k – that’s the essence of the joke that every developer from junior to senior can appreciate and laugh about.
Level 4: The Infinity Illusion
At the top panel, Drake is dismissing the LaTeX-flavored math expression $\lim_{x \to \infty} f(x)$ – essentially “the limit of f(x) as x approaches infinity.” This is a nod to asymptotic analysis in algorithms, where we analyze how a function (like a runtime $f(n)$) grows as the input size $n$ becomes arbitrarily large. In theoretical computer science, we often use Big O notation (originating from number theory’s Landau notation) to describe an algorithm’s complexity by focusing on its behavior as $n \to \infty$. Formally, saying an algorithm is $O(n)$ or $O(n^2)$ is an asymptotic statement – it’s about the trend as $n$ grows without bound. We drop constant factors and lower-order terms, treating them as negligible in the limit. It’s a kind of mathematical elegance: you might examine $\lim_{n\to\infty} \frac{f(n)}{g(n)}$ to see if one function outpaces another, thereby classifying $f(n)$ as, say, $O(g(n))$. This captures the algorithm’s inherent scalability, its growth rate when problem size heads towards infinity.
However, here’s the rub: infinite input is purely a theoretical construct – no real computer is ever going to handle an input of size ∞ (try as we might, we’re bounded by earthly memory and time). The meme humorously highlights what we might call “limit myopia”: focusing on the $\lim_{x\to\infty}$ of performance can be illusory for engineers dealing with finite, real-world constraints. An algorithm that looks superb “in the limit” might carry enormous hidden constants or overheads that the elegant math glosses over. As $x \to \infty$, the leading term dominates, yes, but if your $x$ never even gets beyond a few million (or 10 thousand in this joke), those discarded constants and lower-order terms very much matter. In academic analysis, one might assume $n$ is astronomically large to justify ignoring constants — effectively chasing an idealized infinity where messy real-world details fade away. The top panel’s “lim as x→∞” represents that academic purist approach: it’s the realm of complexity theory, of proving algorithmic dominance as an abstract $n$ grows without bound. It’s beautifully general and gives us insights into scalability — for instance, knowing that mergesort runs in $O(n \log n)$ while bubble sort runs in $O(n^2)$ tells us that beyond some huge $n$, mergesort will outperform bubble sort no matter what. But the price of that generality is obscuring the constants and practical break-even points.
In the bottom panel, Drake prefers evaluating $f(10000)$, which is the polar opposite of a limit: a specific, concrete value for a large but finite input. This embodies a pragmatic performance check — essentially, benchmarking the function on a real-world sized input rather than theorizing about $n \to \infty$. The meme conflates $f(10000)$ with the idea of “just test it on a big input” because 10k is a substantial size you might actually use in a quick experiment or micro-benchmark. It’s a direct, empirical approach: instead of deriving formulas or proving the complexity as $n$ grows large, just run the code for $n = 10{,}000$ and see how many milliseconds (or seconds) it takes. This seemingly unsophisticated method often catches nuances that asymptotic analysis ignores — things like CPU cache effects, constant-time overheads, vectorization, memory latency, and branch prediction. From a theoretical lens, an algorithm might be $O(n^2)$ and another $O(n)$, and as $n \to \infty$ the $O(n)$ one will outperform. But at which $n$ does that crossover happen? If that threshold is enormous (sometimes way beyond $10^4$ or even impossible to reach in practice), then for all real purposes the supposedly “slower” algorithm could be faster. The “infinity” view can thus be misleading when evaluating actual performance constraints. The bottom caption’s preference for $f(10000)$ comically reminds us that constant factors matter: those hidden multipliers and additive terms that Big O notation blithely ignores can decide who wins at $n = 10,000$. A classic systems example: an $O(n)$ linear search through an array can beat an $O(\log n)$ binary search for moderate sizes if the constant factors are in its favor (linear scan can exploit contiguous memory and CPU cache lines, while binary search jumps around, causing CPU cache misses and branch mispredictions). If $n = 10,000$ (a mere 10k entries), a well-optimized linear scan might outrun binary search on modern hardware – even though asymptotically $\lim_{n\to\infty}$ of $\frac{\text{linear}(n)}{\text{binary}(n)}$ would suggest binary search wins for huge $n$. In other words, the race of algorithms isn’t won only at infinity; it’s won at whatever $n$ you actually run.
This meme’s juxtaposition encapsulates an engineering reality wrapped in math humor: fancy algorithmic theorems meet the cold, hard truth of the stopwatch. There’s a wink to the never-ending tug-of-war between theorists and practitioners. The theorist loves the asymptotic elegance of that $\lim_{x\to\infty}$ analysis – it’s general, it’s clean, it yields simple growth classifications like linear, quadratic, exponential. But the practitioner (especially the performance engineer) might retort: “Sure, that’s great on paper, but what happens at $n = 10{,}000$ in the real world?” By highlighting $f(10000)$, the meme is effectively saying “I’ll take a solid data point over a fancy limit any day.” It humorously advocates benchmarks over proofs, not because theory is wrong, but because for real workloads we often care about actual numeric performance at realistic scales. In cutting-edge algorithm research, this is well-understood: for example, the Strassen algorithm for matrix multiplication is asymptotically faster ($O(n^{2.807})$ vs $O(n^3)$ for the classical method), but unless $n$ is huge (tens of thousands or more), the classical method can outperform Strassen due to enormous constant factors and memory overhead in Strassen’s divide-and-conquer steps. The limit $\lim_{n\to\infty}$ might favor Strassen, but $f(10000)$ – i.e., actually multiplying two 10000×10000 matrices and timing it – might still favor the simpler $n^3$ method on real hardware. The top panel’s “Nah” from Drake to limits is that real-world skeptic saying, “As $n \to \infty$, who cares? I’ll be retired (or the universe will have ended) by then. What about $n$ right now?” It’s a playful jab at overly theoretical arguments: if your proof of efficiency only kicks in at sizes we’ll never run, did the better algorithm really win?
In sum, this highest-level take is recognizing the academic vs pragmatic dichotomy. The meme uses strict mathematical notation (the limit as $x$ approaches infinity) to represent the lofty world of theoretical Algorithm Complexity Analysis, and contrasts it with a single concrete evaluation (f at 10000) to represent gritty Performance Optimization in practice. It jokes that sometimes developers happily trade asymptotic rigor for a quick reality check. It’s the classic story of Real World vs Theory: The beautiful $\infty$-limit theory might give you a formula, but the down-to-earth benchmark gives you a number that actually matters for your 10k case. One isn’t universally “better” than the other, but the Drake meme format makes the preference absurdly clear: in everyday engineering, pragmatism trumps purity.
Description
This image utilizes the popular two-panel 'Drake' meme format to contrast a pure mathematical concept with a practical engineering shortcut. In the top panel, the rapper Drake is shown with a grimace, gesturing dismissively at the mathematical notation for a limit: 'lim f(x) as x -> ∞'. This represents the formal, often complex, process of determining the behavior of a function as its input approaches infinity. In the bottom panel, Drake is smiling and pointing approvingly at the much simpler expression: 'f(10000)'. The humor lies in the pragmatic, if less precise, approach common in programming and engineering. Instead of engaging with the complexities of calculus to find the true limit, a developer might simply plug in a very large number (like 10,000) to get an approximation that is 'good enough' for practical purposes. This resonates with experienced engineers who often have to choose between theoretical elegance and shipping a working product
Comments
7Comment deleted
The difference between a mathematician and an engineer: a mathematician needs to prove it works for infinity, an engineer just needs to check that it doesn't crash before the heat death of the universe
Big-O says it’s linear, the profiler says it’s lunchtime - guess which one ships to prod
After 20 years in tech, I've learned that infinity is just MAX_INT with better marketing and worse memory management
Every senior engineer knows that lim x→∞ (time_to_implement_proper_solution) often converges to the heat death of the universe, while f(10000) ships by Friday. Sure, the mathematician in you dies a little inside, but the pragmatist knows that 'sufficiently large' is a perfectly valid architectural decision when your production traffic will never exceed three orders of magnitude less than that. Besides, if you ever hit 10000, you'll have bigger problems - like explaining to your VP why you're still using that monolith from 2015
Big‑O looks great on the whiteboard, but the pager only cares about f(10_000) - constants, cache lines, and branch predictors pay the SLA
Big O proofs are for tenure; f(1e6) is for prod SLAs
Big‑O is the bedtime story; the pager cares about f(10,000) after cache misses, allocator churn, and a nasty tail on the latency histogram