把新旧两套流程吐出来的几十GB结果进行比对。
结果全部一致。
再看最终成绩。
旧流程跑完要五个多小时。
换上他这个专门给五个数排序的小东西之后,省下二十一分钟。
二十一分钟。
放进一个五六小时的大任务里,这数字小得可怜,像从一桶水里舀走一勺。
换个外行看,会觉得他熬了一整夜,就为这点东西,简直是捡了芝麻丢了西瓜。
但江临不这样认为。
因为这套工具不会只跑一次。
这个项目后面还有几十组要重跑,这套工具以后还要接别的活儿。
今天省二十一分钟,明天省二十一分钟,跑上一百次,省下的就是三十多个小时的高强度算力。
这意味着,他能用更少的机器,跑出更快的迭代速度。
更何况,这只是他揪出来的第一颗小石头。
一个年久失修、堆满了懒惰和冗馀的老系统里,这样的小石头,一定还有成百上千颗。
他在记录的末尾这样总结。
一件事被重复的次数足够多,最微小的效率差距,就会撕裂成生与死的鸿沟。
在这个城市,代码写错了,大不了多扣几块钱服务器费用,大不了半夜爬起来重启,大不了回滚重来。
有售后,有同行,有无数冗馀可以挥霍。
但在那个他迟早要回去的废土世界里,没有云服务器,没有售后,没有第二个工程师替他擦屁股。
在那里,机器慢了,不能先要资源,必须先问。
为什么慢。
底层快一点,省一点,从来不是写进简历的性能指标。
而是活下去的馀量。
写下这句话,江临把这个给五个数排序的小东西,单独归到一个新建的文档夹里。
然后,一个新的念头浮了上来。
五个数,他靠纸笔和经验,一晚上能推出来。
可如果是六个数、七个数、八个数呢?
要排序的数字每多一个,可能的排法就成倍地,再成倍地往上翻,很快就会多到一张纸根本画不下。
而且,比较次数最少不等于实际跑得最快。
还要看机器喜不喜欢这套顺序,看那些岔路藏在哪里。
到那时候,凭一个人的脑子去硬想哪一套手势最好,会越来越不靠谱。
不是不能写。
只是人会变成那个最慢的瓶颈。
江临忽然想到一件事。
如果给五个数排序的完美手势,是可以靠一台机器,把所有可能的排法挨个试一遍,自己找出来的。
那别的小动作呢?
那些同样被重复几千万次,同样卡着整个系统脖子的小动作呢?
人来定规矩,定好什么算对,什么算错,什么是绝对不能碰的红线。
然后,让程序自己去试,去试错,去在那片大得可怕的可能性里,替自己捞出那一段更小,更快,更稳定的代码。
不再是人埋头一行行去写。
是写一个程序,让这个程序,去查找别的程序。
好吧,让程序去找程序,听着挺玄,到底有什么用?
打个最简单的比方。
你家里有一把瑞士军刀,剪刀、开瓶器、螺丝刀、锯子,什么都有,出门带一把,啥都能应付一下。
可如果你开了家工厂,流水在线每天只干一件事。
拧同一种螺丝,一天拧几百万颗,你还会用军刀上那个小螺丝刀去拧吗?
当然不会。
你会专门定做一把电动螺丝枪,只为这一种螺丝量身打造,又快又稳。
计算机也是一样。
它平时用的那些现成功能,全是瑞士军刀。
为了应付天下所有情况,做得万能,可靠,可每用一次都得把整套复杂东西开动一遍。
但现实里很多任务,其实就是那条每天拧几百万颗同款螺丝的流水线。
动作简单,规矩固定,就是次数多得吓人。
江临前一晚干的,本质就是给这样一条流水线,亲手定做了一把专用的螺丝枪。
而让程序去找程序,是把这件事再往前推了一步。
定做螺丝枪本身也是累活儿,得懂材料,懂力道,反复试。
他不想每遇到一种新螺丝,就熬夜亲手去打一把新枪。
他想要的,是一台会自己造螺丝枪的机器。
你只管告诉它我要拧这种螺丝,必须拧紧,不能滑丝,剩下的,它自己去试一千种枪头,自己测哪种最快最稳,最后把那把最好的递给你。
人只负责