相比起詹永樞院士的驚訝,郝云在考慮這個問題的時候倒是沒有想的特別復雜,純粹是撓頭的時候靈機一動想出來的這個方法。
程序首先猜測了一個接近1/sqrtnuber的值,然后運用牛頓迭代公式進行了迭代運算。
單從算法邏輯上來講,其實他改寫之后的代碼,和之前那個QSqrt函數的代碼并沒有太大的區別。冰川引擎在ath.c文件中定義的QSqrt函數,事實上也是采用的這個思路。
而要說唯一哪里不同,大概就是在那個神秘的數字——0x5f375a86上了。
根據牛頓迭代算法的原理,猜測值距離最終結果越接近,迭代的次數越少。而神秘的數字0x5f375a86,便是用來計算猜測值的。
而郝云在嘗試了幾次之后意外地發現,如果使用“0x5f375a86”這個數,得到的y將非常接近1/sqrtn,以至于最終執行牛頓迭代算法時,只需要2次代法就可以達到他所需要的精度!
至于這個數是怎么得出來的?
郝云也沒辦法解釋。
畢竟他只是遵循著自己的數學直覺,覺得原來那個程序中選取的數字不夠好用,然后試著換了個更好用的數字試試。
一開始他也試了好幾次,發現更改的數字都沒有原先那個數好用,直到后來靈機一動試到了這個0x5f375a86,發現居然只需要兩次迭代就能完成整個計算過程。
老實說,他自己也驚訝的不行。
可能……
這也和他的數學屬性達到了精通有點關系?
總而言之,采用了0x5f375a86這個特殊的數字之后,單從運算步數來看,整個函數的運算效率將比原本ath.c文件中定義的QSqrt函數快上足足兩倍!
至于這個結果會產生怎樣的效果……
老實說郝云也沒有一個準確的概念。
畢竟他對這款冰川引擎的了解,遠遠沒有達到業內人士的高度。
之前他雖然做過游戲,但其實也就只做過2048這一款游戲而已。神殿逃亡算是運用到了和冰川引擎同源的一款開發軟件,但那款游戲基本上都是李宗正一個人完成的,郝云壓根兒就沒參與到開發環節中,就算參與進去了八成也不會研究引擎的源代碼。
這個世界的游戲開發工具已經進化到足夠傻瓜的程度,除開那些大制作之外,絕大多數的中小型游戲都是能夠單純的依靠開發工具,以及二級程度的編程水平來實現的。
“……話說到底咋測試引擎效率提升了多少?這電腦上就沒有一個打分軟件,或者測試用的游戲嗎?”
郝云在電腦上仔細搜尋了一番,然而根本沒有找到那種能夠用來給引擎打分的工具軟件,也沒找到能測試引擎性能的游戲。
事實上,主辦方確實沒有準備這種東西。
畢竟從一開始,他們壓根兒就沒考慮過有人能真的完成這道送命題。
“我去,這是搞毛線啊?”
搜索了一番之后仍然沒有找到檢測工具,郝云哭笑不得地看著屏幕,徹底沒轍了。
總不能當場開發一款游戲來跑分吧?
雖然也不是不行,但手邊一點素材都沒有,電腦更是不能聯網,總不能從最基礎的素材開始做起吧?
一番糾結之后,最終郝云還是放棄了。
算了。
反正自己也想不到更好的優化方法了……
如此想著,郝云嘆了口氣,伸手點了下考試程序中的提交選項,然后便雙手離開了鍵盤——也就是所謂的AK了。
考試只設置了三天的最長時限,并沒有設置最低交卷時間,提交了答案隨時都可以離場。
因為即便是提前交卷也不會加分,所