Based on anecdotal observation, many iPhone users have long believed that older iPhones get slower over time. Generally, people have assumed that this is because of new features and additions in new versions of iOS that are better optimized for the latest phones.

But Reddit user and Geekbench developer John Poole has a compelling new theory, backed up by benchmarks: the iPhone may throttle performance to preserve battery life as the battery degrades.

Several days ago, Reddit user TeckFire posted a report to the iPhone subreddit stating that, after experiencing slowdown on their iPhone 6S, they replaced the battery with a new one and saw significant improvements in benchmarks

Commenters shared theories and benchmarks in response to TeckFire's findings. But the theory picked up even more steam when Geekbench founder and developer John Poole posted a blog post exploring the issue with his own benchmarks, this time comparing across versions of iOS to control for that.

On iOS 10.2.0, the iPhone 6S did not significantly exhibit this throttling behavior. However, it is detected in iOS 10.2.1, as well as iOS 11.2.0.

The introduction of this behavior in iOS 10.2.1 might have been a coincidence, though nothing is currently certain. Before January of 2017, iPhone 6 and 6S owners (myself included, earlier in 2016) reported that their phones would shut down unexpectedly as the battery reduced. Apple's iOS 10.2.1 addressed the issue. Apple explained its approach in the following update, shared with TechCrunch in February:

Reports at the time suggested that the iPhone 7 was not affected by the shutdown issue. However, Poole did find similar distributions in Geekbench scores on the iPhone 7 to those he found in the iPhone 6S—but with one key difference. Here are his results, again courtesy of his blog post.

In this case, the result does not emerge until the phone is updated to iOS 11.2.0.

We tested on a year-old iPhone 7 (running iOS 11.1.1) that has seen daily battery drain and recharge. We found that its CPU frequency is currently 2,333MHz, close to the expected 2.35GHz. We also ran Geekbench's CPU test on the phone and got average results of 3,503 for single-core and 5,973 for multi-core—almost the same as the 3,506 and 6,073 we got when we first tested the iPhone 7.

In iOS 11.2.1, we didn't see substantially different results. The frequency read at 2,345MHz, and our average Geekbench results were 3,491 and 5,860 for single and multi-core, respectively. Obviously, the nature of the test is different from those run by Poole. But while we weren't able to replicate any slowdown in this very limited test, several Reddit users were. Ars has reached out to Apple for comment.