乐于分享
好东西不私藏

69KB内存跑了45年,你的APP为什么卡成狗?

69KB内存跑了45年,你的APP为什么卡成狗?

旅行者1号,1977年发射,用的是69KB内存、8轨磁带录音机。45年后,它已经飞出太阳系,进入星际空间,还在给地球发数据。

你的手机APP,动辄几百MB,打开要3秒,滑动会掉帧。

问题出在哪?

先说说旅行者1号有多狠

69KB是什么概念?这张文章配图都不止69KB。一台现代智能手机的内存是它的几百万倍。

但NASA工程师做到了:在这69KB里塞进了姿态控制、通信协议、科学仪器管理、故障自愈系统——还要预留空间应对未知情况。

8轨磁带录音机,每秒只能写几KB数据,但能稳定存储几十年的观测数据。

没有云端,没有OTA升级,没有补丁包。代码写上去就是最终版,bug必须零容忍。

现代软件怎么了?

打开你手机里任意一个APP:

  • 天气APP,200MB,要访问通讯录、定位、相册
  • 记事本APP,150MB,启动要联网验证
  • 手电筒APP,50MB,内置广告SDK、统计分析SDK、推送SDK

开发者会说:”用户要功能啊,要体验啊,要数据啊。”

但旅行者1号要的功能更多:控制飞船姿态、管理11种科学仪器、处理故障、和地球通信——而且是一次性写对,不能改。

问题不在硬件,在态度

旅行者1号的代码是手写的汇编和FORTRAN。每一行都要过审,每一个字节都要计较。

现代开发呢?

  • 引个库,多了5MB依赖
  • 加个功能,多塞几个SDK
  • 性能不行?换台更好的手机

硬件性能增长了百万倍,软件效率下降了百万倍。两个趋势正好抵消,用户体验原地踏步。

能学到什么?

不是让你写汇编。但你可以在力所能及的范围内,对代码多一份敬畏:

能不引的库,别引。  npm上那个只有5行代码的库,真的值得你引入整个依赖链吗?

能删的代码,删掉。 没人用的功能,留着的每一行都是负债。

能延迟的加载,延迟。 启动时不必要的东西,等用户需要再加载。

能省的资源,省。 旅行者1号连1字节的内存都不浪费,你的APP为什么要在后台跑满CPU?

写在最后

旅行者1号的成功,不是技术有多先进,是工程有多克制。

在资源有限的年代,工程师被迫做到极致。现在资源”无限”了,克制反而成了稀缺品。

下次写代码的时候,想想那69KB。

你的APP,值得占用多少?


你觉得现代软件臃肿吗?评论区聊聊你见过最离谱的APP体积。