<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roman</title>
    <description>The latest articles on DEV Community by Roman (@stufently).</description>
    <link>https://dev.to/stufently</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4062928%2F817d61e8-4d28-4436-9f82-8b8b29c6b15c.png</url>
      <title>DEV Community: Roman</title>
      <link>https://dev.to/stufently</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stufently"/>
    <language>en</language>
    <item>
      <title>How I normalize benchmark scores across chip generations (and why raw AnTuTu numbers lie)</title>
      <dc:creator>Roman</dc:creator>
      <pubDate>Tue, 04 Aug 2026 17:54:43 +0000</pubDate>
      <link>https://dev.to/stufently/how-i-normalize-benchmark-scores-across-chip-generations-and-why-raw-antutu-numbers-lie-2i1l</link>
      <guid>https://dev.to/stufently/how-i-normalize-benchmark-scores-across-chip-generations-and-why-raw-antutu-numbers-lie-2i1l</guid>
      <description>&lt;h1&gt;
  
  
  How I normalize benchmark scores across chip generations (and why raw AnTuTu numbers lie)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Tags: #showdev #webdev #data #seo&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Benchmark scores inflate over time. A top AnTuTu result in 2024 was around 2.4M points; in 2026 the leaders are pushing 4M. So a statement like "this phone scores 3.1M" is meaningless without context — is that flagship-level today, or last year's midrange?&lt;/p&gt;

&lt;p&gt;It gets worse when you mix sources. AnTuTu measures the whole system, Geekbench isolates the CPU, 3DMark stresses the GPU, DxOMark rates cameras on a completely different scale. None of them are comparable to each other, and none are stable over time.&lt;/p&gt;

&lt;p&gt;I run &lt;a href="https://mobilerank.top/en/" rel="noopener noreferrer"&gt;MobileRank&lt;/a&gt; — a database of 2,500+ smartphones, 239 mobile SoCs and 47 GPUs — and the core feature is head-to-head comparison across generations. That only works if every device sits on one comparable scale. Here's how I approached it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The approach
&lt;/h2&gt;

&lt;p&gt;The short version: every raw score is converted to a 0–100 rating &lt;em&gt;relative to the current state of the database&lt;/em&gt;, not to a fixed reference point.&lt;/p&gt;

&lt;p&gt;Each category gets its own scale. Performance ratings come from CPU and GPU benchmarks, camera ratings from DxOMark, battery ratings from capacity and endurance data. A phone's overall rating is a composite of these, so a gaming phone with a monster chip and a mediocre camera doesn't accidentally outrank a balanced flagship — you can see exactly which category drags it down.&lt;/p&gt;

&lt;p&gt;The key design decision is that the scale is &lt;em&gt;relative and moving&lt;/em&gt;. When a new chip tops the charts, everything below it shifts slightly. A phone rated 95 in 2024 might sit at 88 today — not because it got slower, but because the ceiling moved. That's exactly the behavior I wanted: the rating answers "how good is this device &lt;em&gt;right now&lt;/em&gt;, against everything on the market," which is the question people actually have when buying.&lt;/p&gt;

&lt;p&gt;This is also why raw scores stay visible on every page next to the normalized rating. The 0–100 number is for comparison; the raw AnTuTu/Geekbench/3DMark figures are for verification. If you disagree with the weighting, the underlying data is right there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge cases that bit me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Missing data.&lt;/strong&gt; Not every phone has a DxOMark review — most midrange devices never get one. Filling the gap with a guess would poison the rankings, so devices are only rated in categories where real data exists, and the overall score reflects what's actually known rather than pretending completeness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Same chip, different scores.&lt;/strong&gt; An identical SoC performs differently depending on the body it's in — cooling, power limits and software tuning mean one Snapdragon 8 Elite Gen 5 phone can post noticeably higher sustained scores than another. So chip pages and phone pages are separate entities in the database: the chip has its reference scores, each phone has its own measured results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regional versions.&lt;/strong&gt; Chinese and global variants of "the same" model often differ — chipset, battery, sometimes the whole spec sheet. They get separate entries (you'll see "(China)" suffixes in the database) instead of being merged into one misleading average.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;

&lt;p&gt;The site is a programmatic build: every phone, SoC and GPU gets its own generated page, plus a page for every popular comparison pair — that's how it covers long-tail queries like "phone A vs phone B" that people actually type into search.&lt;/p&gt;

&lt;p&gt;New devices and updated scores flow in daily, and ratings are recalculated on each update since the scale is relative. That's the tradeoff of a moving scale: you can't cache a rating forever, the whole ranking is recomputed when the data changes. At this database size it's cheap; it would need rethinking at 10x the scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like in practice
&lt;/h2&gt;

&lt;p&gt;You can see the normalized scores in action on any comparison page, for example &lt;a href="https://mobilerank.top/compare/phones/oneplus-15t-vs-vivo-x300-ultra/" rel="noopener noreferrer"&gt;OnePlus 15T vs Vivo X300 Ultra&lt;/a&gt; — two ratings side by side, with the raw benchmarks, specs and prices underneath.&lt;/p&gt;

&lt;p&gt;The database updates daily. There are no sponsored placements — rankings are just the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;More depth on sustained performance (throttling is the biggest gap between benchmark numbers and real experience) and richer battery data. &lt;/p&gt;

&lt;p&gt;If you've dealt with normalizing noisy third-party data at scale — especially handling scale drift over time — I'd genuinely love to hear how you approached it.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>data</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
