我开发了一款圆周率计算器 App,挑战硬件性能的极限

查看 6|回复 0
作者:Twins666   
从 Super PI 说起
十几年前,DIY 装机是一件非常有仪式感的事情,每次装好一台新电脑,第一件事不是装游戏,而是跑分。
记得当时有一款软件叫 Super PI ,它的界面非常简陋,功能也只有一个——计算圆周率。选择计算 100 万位,点击开始,然后盯着屏幕,等它跑完。跑完的数字,就是你这台机器的”成绩单”。
我至今记得第一次把计算时间从 30 多秒压到 20 秒以内时的兴奋。换了根内存条,速度快了 3 秒;超频到 3.6GHz ,又快了 2 秒。那种将硬件性能“可视化”的感觉,简单、直接、让人上瘾。
一个念头
随着 PC 时代的逐渐退场,我的设备变成了 iPhone 、iPad 和 Mac 。
有一天,我突然想:我手上的 iPhone ,算 100 万位圆周率要多久?
找了一圈,App Store 上的相关应用,要么是给小朋友背圆周率的,要么就是展示几十位小数的计算结果。没有一款应用,能让我像当年用 Super PI 那样,认真地跑一次大规模计算,然后和别人比较:“你的 iPhone 15 跑了多少秒?我的 iPhone 16 快了多少?”
这个需求看起来可能很小众,但我知道,一定有人和我一样会感兴趣。
于是,我决定自己动手做一个。
算法的选择
要做就做认真的。
圆周率的计算算法有很多,从莱布尼茨公式到 Machin 类公式,我最终选择了 Chudnovsky 算法。原因很简单——它是目前世界纪录保持者使用的算法,每一项能贡献约 14 位有效数字,收敛速度极快。
但 Chudnovsky 算法只是公式层面的选择。真正决定性能的是实现层面:
•        Binary Splitting (二分分裂):将级数求和转化为大整数的分治运算,避免了逐项累加导致的精度损失。
•        NTT (数论变换):大整数乘法的核心,将 O(n²) 的复杂度降到 O(n log n)。
•        多核并行:充分利用 A 系列和 M 系列芯片的多核架构进行加速。
这些听起来像是教科书上的名词,但真正写下去才知道,每一个技术实现背后,都是一个深坑。
开发中的取舍
精度 vs 速度,是我面临的第一个取舍。
我没有使用任何第三方大数库,整个大整数运算( BigInt )完全从零开始用 Swift 实现。这意味着我可以对 Apple 芯片进行最细粒度的优化,但也意味着每个基础运算——加、减、乘、除、取模、开方——都得自己实现、调试,确保它们是正确的。
一个 NTT 乘法的 bug 可能不会让 1000 位的结果出错,但可能在 100 万位时悄悄出问题。为了确保准确,我花了大量时间做交叉验证,逐位对比,确保每一位都是正确的。
功能的克制,是另一个取舍。
我本可以加入更多跑分功能、排行榜、社交分享等,但我最终选择了克制。这个 App 的核心就是:在你的设备上,认真计算一次圆周率,告诉你用了多长时间。
在此基础上,我加了一些自己想要的功能:
•        数字搜索:想知道你的生日在圆周率的第几位吗?
•        分享卡片:设计过的卡片,记录你的设备、计算位数、耗时。
•        计算历史:追踪每次计算的成绩,见证设备性能的变化。
•        圆周率知识:关于 π 的趣味故事、历史和算法介绍。
每个功能都是因为”我自己想用”才加的,而不是为了凑功能列表。
一些感悟
开发这个 App 的过程,本身就像一次性能测试——测的是我自己。
写 BigInt 时,我重新拾起了大学时代的数论知识,才发现那些曾经觉得”没什么用”的定理,竟然能让一个乘法快上百倍。
调试多核并行时,我学到了一件事:并行计算不是免费的午餐。任务拆分、内存竞争、同步开销,最终的加速效果远不是”核心数倍”那么简单,能看到显著提升已经很值得欣慰。
而在打磨 UI 时,我反复思考的是:如何让一个“等待计算完成”的过程不那么焦虑?进度百分比要平滑地前进,哪怕后台计算可能在某个阶段停滞。用户不需要知道每一步的具体细节,只需要看到数字在动,知道程序在跑。
最后
这个 App 注定不会成为大众产品。
但如果你曾在深夜里盯着 Super PI 的进度条,等待一个数字来证明你的硬件没有白买;如果你好奇手中的设备在面对一个纯粹的数学问题时,能跑得多快——
那么,这个 App 就是为你做的。
关于内购
我知道很多人对内购持保留态度,因此我想诚恳地说明:这个 App 绝对不会影响你基本的使用体验。免费版本可以计算最多 1000 位圆周率。如果你希望计算更多位数,或者想尝试更多高级功能,比如数字搜索、多核并行计算等,可以选择 Pro 版本,价格比一杯咖啡还便宜。
我的初衷并不是为了推销,而是提供一个让你体验硬件性能并享受数学之美的工具。内购只是为了让你在体验过程中,能够更好地使用它,并支持我的持续开发。
下载链接: https://apps.apple.com/app/pi-digits-calculator/id6761232095
算一次 π,看看你的设备有多快。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部