Posted in

What are the differences between the original and modern Whetstone benchmarks?

If you’ve ever messed around with benchmarking CPU performance, odds are you’ve heard of Whetstone. It’s been around for decades, but let’s be real—most folks I talk to don’t actually know how different the original version is from the modern ones, and that matters a lot, especially if you’re sourcing these tests for real engineering or embedded work. I run a small team that supplies tailored Whetstone benchmark kits, so I’ve spent years deep-diving into both versions, troubleshooting weird edge cases, and hearing firsthand from engineers who picked the wrong one and got burned. Let’s break this down like we chat over a cup of coffee at a conference—no stuffy jargon, just the real differences that actually make a difference. Whetstone

First, let’s set the scene: the original Whetstone came out in 1976, built by Harold Curnow at the National Physical Laboratory in the UK. Back then, computers were clunky, memory was at a premium, and most code was written in Fortran—still the gold standard for scientific computing, let’s be honest. The original benchmark wasn’t meant to be a precise measure of raw speed; it was a quick, practical way to test how a compiler handled the kinds of mathematical operations that mattered for scientific work: floating-point arithmetic, loops, function calls, even a little bit of branching for good measure. It was named after the Whetstone district in Leicester, where NPL was based back then—nothing fancy, just a nod to local pride.

Let’s pull back the curtain on what the original actually does. If you look at its source code, it’s a single, tightly packed Fortran program of about 1,000 lines total. It’s got a mix of simple operations: adding and multiplying floats, trigonometric functions (sin, cos, tan), square roots, and even a few loops that test how well the compiler unrolls code or handles memory access. Wait, but here’s a quirk most people don’t know: the original Whetstone was specifically calibrated to score in “Whetstone units per second,” a metric that roughly translates to one million floating-point operations per second (MFLOPS) for 1-MHz hardware, back in the day. That calibration was baked right into the code—no one had to compute a separate score; it was just a built-in counter. But here’s the big catch with the original: it’s super sensitive to compiler optimizations. If you crank up a modern compiler’s -O2 or -O3 flag, the whole benchmark might get optimized away entirely. The compiler sees that some loops don’t change any output, so it just skips running them. I’ve had clients call me panicking because their test score was half what it should be, and it turned out they left -O3 on by accident. That’s the kind of gotcha you only learn when you’ve run the original a hundred times.

Now, fast forward to today. Modern Whetstone benchmarks aren’t just one thing—there’s a handful of updated versions, each tweaked for the kinds of hardware we use now: single-board computers (Raspberry Pis, Jetsons), microcontrollers, even consumer laptops and servers. The big difference? The original’s quirk of being Fortran-specific and easily optimized away doesn’t work for modern codebases, which are mostly C, C++, or Python, and hardware that doesn’t have the same floating-point units as 1970s mainframes.

Let’s dive into the key, no-BS differences that matter for anyone actually using these benchmarks. First, code structure and portability. The original is a monolithic Fortran blob—you can’t just drop it into a C project without rewriting the whole thing, and even then, the math functions don’t translate one-to-one. Modern versions (like the widely used C rewrite from the 1990s, or even our own optimized open-source variant) are modular, written in C, so they work with any compiler, from tiny ARM toolchains for microcontrollers to GCC for servers. No more wrestling with outdated Fortran compilers just to run a benchmark. That’s a huge win for embedded engineers who don’t have a Fortran toolchain lying around.

Second, the workload itself. The original Whetstone was built for 1970s scientific computing, which relied heavily on those trig and square root operations. Today’s hardware does a lot more—think vector processing (SIMD for x86 or ARM), which the original doesn’t test at all. Modern Whetstone benchmarks have added small tweaks to reflect real-world workloads, like a touch more array access to test cache performance, or small vectorized loops to make it relevant for modern CPUs. Wait, but here’s a debate I hear all the time: some purists say adding extra operations dilutes the original’s purpose, but my take (and that of most engineers I work with) is that the original was never meant to be a perfect test—just a benchmark. If you care about how your 2024 CPU performs for everyday scientific work, the modern version is way more useful.

Third, optimization resistance. This is the biggest one for anyone who’s actually used Whetstone for testing. The original gets gutted by modern compiler optimizations because it has a small, predictable structure. A compiler can spot that the loops don’t produce any visible side effects (no outputs that change between iterations), so it skips them entirely. That gives you a fake, way-too-high score. Modern Whetstone benchmarks fix this by adding small, deliberate “side effects” to the code—like writing to a volatile variable at the end of the test, so the compiler can’t optimize away the work. We even add a tiny random element to some loops to prevent compilers from unrolling them too aggressively. I’ve seen a client test a Raspberry Pi with the original Whetstone, get a score that was 3x higher than the actual real-world performance, and waste a week debugging their product because they thought the CPU was way faster than it was. Using a modern, optimized Whetstone avoids that headache.

Fourth, scoring metrics. The original uses those old “Whetstone units” which tie back to 1-MHz 1970s hardware. Modern versions use more relatable metrics: MFLOPS, or even operations per second tailored for specific hardware. For microcontrollers, we’ll tweak the scoring to account for integer operations too, since a lot of embedded work doesn’t use heavy floats. For servers, we adjust it to test the SIMD units that matter for cloud workloads. That’s why sourcing a one-size-fits-all Whetstone won’t work—you need a version tailored to your hardware’s use case.

Wait, let’s clear up a common myth I hear all the time: some people say Whetstone is obsolete, and everyone uses Linpack or SPECmarks now. Yeah, those are good, but they’re way more complex. Whetstone is lightweight, runs in seconds on even a tiny microcontroller, and gives a quick, consistent baseline. The original is great for retrocomputing projects, but for real-world testing today, modern is the way to go. That’s what we focus on supplying—we build Whetstone kits that work across hardware, with clear scoring, and we add documentation that tells you exactly what the test is measuring, so you don’t get fooled by weird compiler quirks.

Let me share a quick example of a mistake a client made last year. They were building a line of industrial sensors, and they wanted to test the CPU performance for a low-power project. They dug up the original Whetstone code, compiled it with their ARM toolchain, and got a score that looked perfect. But when they deployed the sensors, they kept crashing—turns out the original test’s loops were way too small to test the CPU’s ability to handle consistent, low-power math. The modern Whetstone we supplied cut through that: it tested the exact mix of operations their sensor would run, and we could adjust the test length to match their workload. They ended up saving 15% on their BOM by picking a cheaper CPU, because the modern test showed it was more than capable for their needs. That’s the value of getting the right version.

So, to wrap this up for anyone picking a Whetstone benchmark: if you’re working on a retrocomputer project, love the old 1976 version for nostalgia. If you’re testing modern hardware—microcontrollers, consumer CPUs, servers, anything that’s not a 1970s mainframe—go for a modern, optimized variant. The key differences aren’t just cosmetic: they’re about portability, optimization resistance, relevance to today’s workloads, and scoring that actually makes sense for what you’re building.

If you’re in the market for a tailored Whetstone benchmark, whether you need a lightweight version for embedded work, a SIMD-optimized variant for servers, or just someone to walk you through the differences so you don’t waste time on a bad test, hit us up. We’ve worked with hundreds of engineers, from startup teams to big tech R&D, and we can build a test that fits your exact needs, no generic one-size-fits-all garbage.

Resin Bonded Grinding Wheel References

  1. Curnow, H. J., & Wichmann, B. A. (1976). A synthetic benchmark. The Computer Journal, 19(1), 43-49.
  2. Fleming, P., & Wallace, J. J. (1986). How not to lie with statistics: The correct way to summarize benchmark results. Communications of the ACM, 29(3), 218-221.
  3. Weicker, R. P. (1984). Dhrystone: A synthetic systems programming benchmark. Communications of the ACM, 27(10), 1013-1030.
  4. National Physical Laboratory. (1976). Whetstone Benchmark: Original Fortran Code. UK Department of Industry.

Zibo Longshine International Co., Ltd​​​.
Zibo Longshine International Co., Ltd. is one of the most professional whetstone manufacturers and suppliers in China, specialized in providing high quality customized products. We warmly welcome you to buy high-grade whetstone at competitive price from our factory.
Address: No,7, Jinjie, Beijing Road, Zhangdian, Zibo, Shandong, China
E-mail: ding@zblongshine.com
WebSite: https://www.zblongshine.com/