高人竟在我身边
时间:2023-05-26 来源: 作者:晨星LL
好家伙!
前两道题还在地球上。
这道题干脆都飞地球外面去了?!
不过直觉告诉郝云,这道题虽然读起来难,但可能实际上做起来反而会比前两题简单。
只不过遗憾的是,即便是这道题,以他的编程能力也是一点儿办法都没有,琢磨了好一阵子都束手无策,感觉光是读附件的那些天文数据就像是在看天书了。
第四题的要求倒是挺简单的,针对“冰川引擎”的代码进行优化,要求将引擎运行效率提升至少百分之十。
冰川引擎是当今3d游戏的主流开发引擎,也是目前商业化最成熟的游戏引擎之一,由龙威集团十年前开发并运营到现在。
表面上看这道题似乎是最容易的,至少坐在这里的270名参赛者可能没接触过流水线、疫情防控和航天,但一定或多或少玩过或者看别人玩过游戏。
郝云当然也是这么想的。
读完这道题之后的他顿时眼睛一亮,感觉像是抓住了救命稻草似的,将附件里的内容下载了下来,开始反复地琢磨了起来。
然而……
坐在这里的主试委员会们心里都清楚的很,这大概是四道题中最不可能完成的一道题。
是的。
其他几道题只是难而已。
但这道题是几乎不可能完成,甚至于压根儿可以当成是一道浪费时间的陷阱题来看!
一款经过市场的检验,并且持续更新了十年的商业化游戏设计引擎,很多代码几乎已经将计算机的性能压榨到极限了。
说白了,人家用了不知道多少根头发、献祭了不知道多少码农堆砌出来的算法,凭啥让你一个大学生用一天的时间,就能给人家的引擎提升百分之十的效率?
嗯?
就问你凭啥?
高人竟在我身边 第九十九章 101号选手已经走远
www.telexh
.com,最快更新高人竟在我身边最新章节!
老实说,这道题还真把郝云给难住了。
看了半天题目,他愣是一行代码都没敲出来。
针对“冰川引擎”的代码进行优化?
提升引擎运行效率百分之十?
话说这款引擎的底层代码长啥样他都还没看过呢……
与此同时,比赛现场的后台。
工作人员在詹永枢院士的要求下,调出了101号选手的屏幕。
看着出现在屏幕中的第四道题目,站在詹院士旁边的张存浩教授笑着摇了摇头,语气颇为遗憾却又毫不意外地说道。
“没想到他居然选的是第四题,看来彻底没戏了。”
“哦?”詹永枢院士饶有兴趣地抬了下眉毛。
“老师您该不会忘了,我在回水木大学教书之前,就是在龙威集团软件研发部门的一线岗位工作的吧?”张存浩教授开了句玩笑说道。
“我倒是还没看题目的具体内容,这个冰川引擎也是你们部门的产品吗?”
“那倒不是,这个产品本身是一个收购过来的研发团队开发的,不过我们软件研发部门给这个产品做过优化,现在的冰川3.0,就是经过我们二次优化之后的产品。现在主流的大型3d动作游戏,尤其是第三人称这个大类里面,基本上都是用这台引擎制作的!”张存浩教授说着,脸上不禁挂起了一抹自豪。
不过,他也确实有自豪的资本。
龙威集团是夏国电子工业领域里的巨头,而其旗下庞大的软件研发团队,正是奠定这一基础的因素之一。即便电子游戏是新历之后才出现的新鲜玩意儿,但也没有任何一名软件工程师因此而轻视它。
张存浩教授的意思很明确。
和另外三道没有限定成果验收标准的题目来比,这道对性能提升有明确要求的题目是绝对不可能完成的!
因为这是无数软件工程师心血的结晶!
因为这就是无数次优化之后的产物!
因为这就是最简练的代码!
它就像是一件艺术品,没有一个字母是多余的!
别说是坐在这里的学生了,就算是站在这里的主试委员会,想用短短三天时间解决这个第四道题,也是几乎不可能做到的。
当然,时间再长一点的会还是有可能做到的。
“说实话,这种连你都觉得束手无策的题目,出现在这种面向大学生的比赛上……是不是有些不太妥当?”詹永枢院士看了张存浩教授一眼说道。
张存浩教授讪讪一笑说:“往届大赛四道题中设置一道陷阱题不是惯例吗?这也是考察选手们对自己客观情况的认真。我相信只要稍微动一动脑子就能想到,对这种商业化应用已经成熟的软件进行优化,是没什么机会的。”
詹永枢院士呵呵笑了笑,没有说话。
他大概能猜到一点,用这种题目作为陷阱题的原因。
其一自然是像张存浩教授说的那样,四道题中塞一道用来埋人的送命题是希望杯大赛的惯例。至于其二,恐怕也和龙威集团给了不少赞助费有关。
毕竟像希望杯这样受到无数大学生和专业人士关注的全国性赛事,最后一道大题无人做出,这本身就是一个不得了的噱头。
用这个噱头来做推广,比任何硬广都要具有话题性。
想到这场比赛的整套考试系统都是由龙威集团免费赞助给主办方的,詹永枢院士也没说什么,只是对屏幕中的那名选手也不报太大希望了。
毕竟哪怕他自己来,也未必能在三天的时间里将这个冰川3.0引擎提升百分之十的性能。换个角度来想,如果有这么容易就能做到的方法,冰川引擎的开发团队和负责帮引擎做优化的软件工程师们,也一定早都想到了。
选择自己擅长的课题研究,避开那些明显只会浪费时间和精力的题目,同样是一名程序设计师必备的素质。
如果做不到这点……
这场比赛,101号选手已经走远了!
……
郝云并不知道,自己只不过是读题的这么一回儿功夫,站在不远处考场后台的几位业内大佬,已经连他的结局都预见了。
真的到此为止了吗?
一开始郝云也曾这么悲观的想过。
毕竟当他把整个冰川引擎的代码快速过了一遍之后,光是看懂便花了不少力气了。
“首先得冷静……”
“然后,得搞清楚这款引擎运行的逻辑。”
让图形数据输出的速度更快,质量更高是一款好引擎的重要评判标准。想必在让这款引擎上线之前,冰川引擎的开发人员就已经绞尽脑汁地优化过它的代码了。
想在前人的努力上更进一步不是完全没有可能,但指望凭一个人的力量在短短三天时间内做到,恐怕自己的系统外挂还得加强。
如此说来……
想对引擎本身的代码进行优化是几乎不可能实现的。
自己唯一的希望,恐怕只有在引擎本身代码之外的地方。
比如,那些被频繁调用的底层函数?
不管是3d引擎还是2d的引擎,不管是国内流行的“冰川”还是国外比较流行的“荒原”,一切游戏引擎归根结底都需要对底层函数频繁的调用,越底层的函数被调用的也就越频繁。
尤其是3d图形渲染这一块!
有时候玩家碰到大场景出现卡顿,甚至角色悬空、穿墙,其实很大程度的原因就是图形算法的速度跟不上。
如果能优化底层函数……
搞不好自己还真有希望搞定这道题?
一瞬间,郝云被自己疯狂的念头给吓了一跳。
卧槽?
他仔细在心中合计了一下,这特么好像比优化冰川引擎还难啊!
毕竟冰川引擎好歹还算是新历元年之后的产物,但冰川引擎调用的那些底层函数,可是在人联时代之前就已经被开发出来了。
但……
万一能行呢?
咽了口唾沫,郝云抱着试一试的想法,找到了冰川引擎目录下code文件夹中的math.c文件,翻开了里面存储着的大量被调用函数。
将这些代码从头到尾全看一遍显然是不现实的,不过郝云也没打算干这么蠢的事儿。
他只需要找到这款引擎在运行时被调用次数最多,每一次加载游戏场景时几乎都会被调用、并且足以影响到引擎运行效率的函数,然后再去里面寻找改进的机会便可。
很快,郝云锁定了一条被命名为q_sqrt的函数。
这个函数表面上看着平平无奇,只不过是一个运用了牛顿迭代法的求平方根倒数的算法。
然而有意思的是,在这款引擎的运行过程中,需要求平方根倒数的情形多到了令人发指的程度。
因此换个角度来想,该函数的运算速度,已经足以影响到引擎本身的效率。
这就好像航天火箭上的一颗螺丝钉,表面上看火箭的速度并不取决于这颗螺丝钉本身,而是取决于火箭引擎的设计和关键的燃料等等,但当火箭引擎的设计和燃料技术都发展到了瓶颈,想要进一步提升火箭的效率,就只有从根本的材料上着手研究了。
郝云此时此刻正在做的,便是类似的事情。
然而……
虽然思路已经找到,但想要走通这条路却并不容易。
到这为止都没有任何值得深挖的地方,毕竟牛顿迭代法,本身已经是一种非常优秀的求平方根倒数的数学方法了。
再想创新?
数学方法上改进几乎不可能!
如果想比这更快,恐怕就只有对输入值和输出值建立一个庞大的数据库才能实现了。
然而为区区一个函数建库,似乎又显得本末倒置……
时间一分一秒过去,郝云的电脑上,还是一行代码都没有敲下。
在后台看着的詹永枢院士轻轻叹了口气,眼中浮起了一丝失望的表情。
很明显,这位101号选手,已经陷入了钻牛角尖的境地。如果不能立刻改变策略,换一道题目的话,他的进度将会被其他选手远远甩开!
至少他们见到的,已经有三名种子选手,分别将其他三道题的进度推进到四分之一了。
“虽然勇气可嘉,但这样下去是不会有结果的,”张存浩教授笑了笑说,“我刚刚看了一圈,好像就他还在研究第四道题。”
“这种题目出现在比赛中就很有问题,”詹永枢院士摇了摇头,“下次比赛可不能这么胡来了。”
张存浩教授尴尬笑了笑,轻咳了声:“下次一定。”
然而就在两人都认为,101号选手已经没有任何希望了的时候,坐在电脑桌前的郝云忽然动了。
只不过,他的操作好像有些诡异?
只见他没有着急去写什么代码,而是将math.c文件中关于q_sqrt函数的那一段代码直接删掉了。
“他想干什么?”
看着郝云屏幕上的操作,张存浩被这位选手谜一样的动作给惊讶到了。
他大概能猜到这位选手打算干什么,无非是想重新定义“反平方倒数”的算法,然而这个世界上有可能存在比牛顿迭代还要简便的算法吗?
话说这已经不是程序的范畴,而是数学的领域了吧?
詹永枢院长也被惊讶到了,一时间没有看明白郝云打算干什么。直到他看见一行【i=0x5f375a86-(i》1)】出现在屏幕上时,才微微收缩了瞳孔。
“我可能知道他想干什么了。”
“……?”
张存浩有一脸的懵逼,看向了自己的老师,试图寻求答案。
然而,詹永枢院士却丝毫没有解答他困惑的打算,只顾自己在那儿摸着下巴的胡渣,看着屏幕上的那段代码赞许点头。
“妙啊……”
“实在是妙!”
高人竟在我身边 第一百章 101号选手提前交卷?
www.telexh
.com,最快更新高人竟在我身边最新章节!
相比起詹永枢院士的惊讶,郝云在考虑这个问题的时候倒是没有想的特别复杂,纯粹是挠头的时候灵机一动想出来的这个方法。
程序首先猜测了一个接近1/sqrt(number)的值,然后运用牛顿迭代公式进行了迭代运算。
单从算法逻辑上来讲,其实他改写之后的代码,和之前那个q_sqrt函数的代码并没有太大的区别。冰川引擎在math.c文件中定义的q_sqrt函数,事实上也是采用的这个思路。
而要说唯一哪里不同,大概就是在那个神秘的数字——0x5f375a86上了。
根据牛顿迭代算法的原理,猜测值距离最终结果越接近,迭代的次数越少。而神秘的数字0x5f375a86,便是用来计算猜测值的。
而郝云在尝试了几次之后意外地发现,如果使用“0x5f375a86”这个数,得到的y将非常接近1/sqrt(n),以至于最终执行牛顿迭代算法时,只需要2次代法就可以达到他所需要的精度!
至于这个数是怎么得出来的?
郝云也没办法解释。
毕竟他只是遵循着自己的数学直觉,觉得原来那个程序中选取的数字不够好用,然后试着换了个更好用的数字试试。
一开始他也试了好几次,发现更改的数字都没有原先那个数好用,直到后来灵机一动试到了这个0x5f375a86,发现居然只需要两次迭代就能完成整个计算过程。
老实说,他自己也惊讶的不行。
可能……
这也和他的数学属性达到了精通有点关系?
总而言之,采用了0x5f375a86这个特殊的数字之后,单从运算步数来看,整个函数的运算效率将比原本math.c文件中定义的q_sqrt函数快上足足两倍!
至于这个结果会产生怎样的效果……
老实说郝云也没有一个准确的概念。
毕竟他对这款冰川引擎的了解,远远没有达到业内人士的高度。
之前他虽然做过游戏,但其实也就只做过2048这一款游戏而已。神殿逃亡算是运用到了和冰川引擎同源的一款开发软件,但那款游戏基本上都是李宗正一个人完成的,郝云压根儿就没参与到开发环节中,就算参与进去了八成也不会研究引擎的源代码。
这个世界的游戏开发工具已经进化到足够傻瓜的程度,除开那些大制作之外,绝大多数的中小型游戏都是能够单纯的依靠开发工具,以及二级程度的编程水平来实现的。
“……话说到底咋测试引擎效率提升了多少?这电脑上就没有一个打分软件,或者测试用的游戏吗?”
郝云在电脑上仔细搜寻了一番,然而根本没有找到那种能够用来给引擎打分的工具软件,也没找到能测试引擎性能的游戏。
事实上,主办方确实没有准备这种东西。
毕竟从一开始,他们压根儿就没考虑过有人能真的完成这道送命题。
“我去,这是搞毛线啊?”
搜索了一番之后仍然没有找到检测工具,郝云哭笑不得地看着屏幕,彻底没辙了。
总不能当场开发一款游戏来跑分吧?
虽然也不是不行,但手边一点素材都没有,电脑更是不能联网,总不能从最基础的素材开始做起吧?
一番纠结之后,最终郝云还是放弃了。
算了。
反正自己也想不到更好的优化方法了……
如此想着,郝云叹了口气,伸手点了下考试程序中的提交选项,然后便双手离开了键盘。
考试只设置了三天的最长时限,并没有设置最低交卷时间,提交了答案随时都可以离场。
因为即便是提前交卷也不会加分,所以大多数人就算提前做完了也会选择熬到饭点再交卷,和一起来参赛的朋友出去吃饭。
郝云一开始也是这么打算的,但奈何他的隔间里啥也没有,除了干坐着等之外根本没事情可干,于是只能从自己的隔间里出来了。
离开考场的时候,站在安检口的还是那个保安小哥。
郝云看了他一眼,他也盯着郝云看了一会儿。
“上厕所?你走错方向了。”
“没,我考完了。”
“考,考完了?”
“嗯,”郝云点了下头,指了指体育馆的出口,“我可以出去了吗?”
总算是从愣神中回过了神来,保安小哥木木地点了下头,解开了拦在入口处的隔离带。
两年前的希望杯也是在夏东师范大学比的,当时的他也是站在这里维持秩序。如果他没记错的话,当时最早交卷的考生,也是下午五点钟的事情了。
然而现在,距离九点钟考试正式开始还没一个小时……
这特么是交了白卷吗?
好歹也是从几万份作品中入围的决赛强者,不至于交白卷吧?!
事实上,惊讶的不只是站在考场入口的几名保安小哥。
站在考场后台的主试委员会们,远远比这里的所有人都要惊讶。
尤其是张存浩教授。
在看完了郝云重写的代码之后,整个人都傻掉了。
盯着草稿纸上密密麻麻的算式,不信邪地笔算了无数遍的张存浩教授,终于忍不住爆了一句粗口。
“卧槽!这家伙……是怎么想到这个数字的?”
这……
这也太不可思了!
仅仅只更改了一个猜测数,就让整个函数的运算效率提升了足足两倍?!
站在张存浩教授的旁边,龙威集团软件开发部门的冯正青经理,悄悄拉了他一把,小声问道,“如果将它运用在冰川引擎上能提升多少运行效率?”
“保守估计百分之二十,3d引擎中针对反平方倒数的相关运算还是不少的……”
“怎么会这么多?”冯经理微微动容。
身为外行人的他并不懂那么多门道,也不懂什么是牛顿迭代算法,只是觉得这简直是不可思议!
冰川引擎虽然不是龙威集团的核心研发项目,但该项目组里的计算机大牛也绝对不少。然而这么多人都没有发现这个改进方法,却被一个学生给发现了?
换谁也特么的没法信啊!
满对着写满的草稿纸,张存浩教授扔在苦思冥想着,虽然他已经渐渐感觉到这个东西超出了他所熟悉的研究领域。
站在他旁边的是一名来自首都国防大学的老教授,只见这位老教授在沉默许久之后,也是发出了一声由衷的感慨。
“不可思议……没想到居然让这家伙在最不可能找到突破口的地方找到了突破口。我之前一直认为math.c文件中的函数已经足够完美了,就像加减乘除这些工具一样可以直接使用。没想到居然还有如此神奇的方法,能够让完美的边界再向上一步。”
“这小子是个人才啊!”
不知心里头在想着些什么,张存浩教授沉默的表情中忽然浮起了一丝纠结。
挣扎了许久之后,他看向了自己的老师詹永枢院士。
“不过恕我直言,这样的答案真的没问题吗?”
詹永枢院士看了他一眼。
“你还不服气吗?”
“倒是没有不服气,我只是觉得……有点儿憋屈,”张存浩教授憋了好久,才说出了心里话,“这根本不是程序意义上的解法,他甚至压根儿就没有修改哪怕一行代码。无论是谁都能看得出来……这特么,根本就是数学!”
是的,这特么根本就是数学!
那个参赛者只不过是修改了一个随机数,结果凑巧地让计算“反平方倒数”的底层函数少做了几次牛顿迭代,然后就这么“积少成多”地实现了对引擎的优化?
说到底为什么偏偏是这个数字啊?!
毕竟不是数学家,张存浩想的都快崩溃了,也没想出来。
看着一脸抓狂的学生,詹永枢院士忽然笑了。
“谁说不是呢?”
他也没想到这个数字到底是怎么算出来的,而且是完全一点头绪都没有的那种。
完全依靠直觉?
类似的情况倒也不是没有过,有些数学常数其实最开始也是依靠经验猜出来的,直达十几年年甚至是几个世纪之后才被证明其中的数学原理。
想到这儿,看着那个正在离开考场的考生,詹永枢院士不禁在心中轻声感慨。
可能……
这就是天才吧。
高人竟在我身边 第101章 主试委员会遭遇难题
www.telexh
.com,最快更新高人竟在我身边最新章节!
对发生在比赛现场后台的事情一无所知,郝云从比赛现场出来之后,便坐地铁去了尚海市的金陵路,想给家里买点东西寄回去,然而逛了好几圈都没看找到具有本地特色的土特产。
正好也有段时间没给家里打电话了,郝云便拿出手机翻开了通讯录,打了个电话回家里。
“喂,爸,在忙啥呢?”
接到电话的时候,郝宥才同志正在吃午饭。
“周六能忙啥,倒是你干啥呢,咋想起来和你爹打电话了?是不是生活费用完了?我这给你打过去。”
“别别别,生活费够花,等我周转过来了甚至还想给你们打点儿过去,”郝云嘿嘿一笑,接着说道,“我在尚海!就是问下家里有没啥要买的,我这边买了给你们寄过去!”
猜你喜欢