周曼側頭,看著蕭伯年。
她剛才被沈亢說有些氣悶、挺鬧心,還有點委屈,但是現在心裡暖暖的。
她堂堂一個商界女強人,見識過的人不計其數,各種各樣的話術也都是聽過,一個人說的話是真心話,還是場面話,她聽出來。
蕭伯年說的,顯然就是真心話。
因為他沒有一味地去吹捧自己,而是坦誠了自己這道炒青菜的一些「特點」,而這些特點,在他那裡,都是優點。
這很合理。
畢竟,食物這種東西,本就是一件非常個性化的事。
就像有些人愛死了川菜,覺那股麻辣鮮香是人間至味,一頓不吃就渾身難受;可換一個人來,就覺太刺激、太重口,吃兩口就冒汗,完全不理解這有什麼好吃的。
再比如漢堡,喜歡的人說它方便、紮實、痛快,麵包夾著肉餅芝士,一口下去什麼都有了;不喜歡的人卻說,這不就是兩片麵包夾塊肉嗎,有什麼可吃的,還不如一碗熱湯麵舒坦。
阿三菜也一樣,喜歡的人覺香料層次豐富,一口下去千迴百轉,每一口都有驚喜,非常美味;不喜歡的人卻覺味道太怪、太沖,聞著都頭暈,覺吃這種糊糊跟吃屎也沒有太大的區別。
所以,同一道菜,在不同人的嘴裡,根本就是兩種東西。
沈亢覺這盤青菜咸了、老了、半生不熟,那是沈亢的口味,不懂欣賞。
蕭伯年說它有起承轉合、有回甘,也並不是是刻意美化,而是他真就這麼覺。
周曼越想越覺是這麼回事。
蕭伯年這個人,口味本來就和她合來。她做的菜,他吃下,也願意吃。上次她下廚,蕭伯年也吃了很多,那次可沒有誰逼他。
今天這盤青菜,他夾了三根,說「不錯」,那神態安安靜靜,既不誇張,也不勉強,就是很自然地吃下去了。
這大概就是,她的「特點」,恰好落進了他喜歡的範圍里。
這麼一想,周曼心裡更舒坦了。
她甚至有些意,覺自己這道青菜,也不是誰都能吃的。
你沈亢吃不下,只能說明你的口味還不到那個層次。蕭教授能品出回甘,那是蕭教授的本事。
周曼終於沒忍住,對沈亢說:「聽見沒?不是菜的問題,是你不會吃。」
說完,又覺這話太像小女生賭氣,便端起果汁,遮了遮臉。
而餐桌這邊
沈亢向蕭伯年看過去。
蕭伯年若無其事,但就是不敢看他。
沈亢又向旁邊的何秋竹看過去,心想,周總你說我不會吃是吧?那我給你找個會吃的。
「別光吃肉啊,吃點青菜,葷素搭配一下。」沈亢把那盤青菜往何秋竹那邊推了推。
何秋竹頭都不抬。
「我不吃青菜。」
「……」
沈亢側頭看著這小子傻乎乎悶頭乾飯的樣子,腦子裡浮現出了在學校、兩人一起吃飯的時候,何秋竹總是盯著各種蔬菜吃的畫面。
往往都是自己用各種辦法,往她的盤子裡添各種肉。
自己還感嘆過好幾次,說你小子上輩子是不是兔子?不然怎麼這麼愛吃蔬菜呢。
結果現在,你小子跟我說,你不吃青菜?
好好好。
你們精,我也不傻。
既然病人都康復了,沈亢也不多嘴了,開始扮高冷,儘量多吃菜、少說話。
還好他在學校里的時候,一直都是高冷男神,習慣了,所以現在扮演起來還是挺順手的,挺像那麼回事。
至於周曼,也確實康復了,不再搞出一副「模範媽媽」的樣子來了,又恢復了往日的常態,心下則是暗暗埋怨那本書的作者,寫都是什麼亂七八糟的?一點都沒用!
盡信書,不如無書唉……
四個人就這麼,一邊吃,一邊閒聊上兩句。
期間,周曼還提到了沈亢扛回來的那個蛇皮袋,問那是啥?
沈亢就說,那是一些員工從老家帶來的各種土特產,你送一些、我送一些,都是在拍他這個老闆的馬屁。到後邊歸攏了一下,有點多,隨便拿了個蛇皮袋裝著,就扛回來了,畢竟東西太多,他一個人也吃不完。
說到這裡,沈亢還說了一句:「都是土東西,周總你身份尊貴,就別吃了,怕你吃不慣。」
周曼就抬眼,「你怎麼知道我吃不慣?」
沈亢就說:「這不明擺著的嗎?你老人家平時都是吃法餐、喝羅曼尼康帝的,這東西,你哪吃慣?我都不好意思往你面前放,還是我這種平頭老百姓自己吃吧。」
周曼看他這幅小氣鬼的樣子,就愈發想要吃。頗有一種,看到個小娃娃拿著根棒棒糖在那裡津津有味地吃著,然後上去搶過來咬掉一半,然後看著娃娃先懵、再哇哇大哭,自己就特別快樂的那種惡趣味。
生孩子如果不是用來玩的,那將毫無意義——雖然不太貼切,但大概就是這麼一種意思。
「你少來這套。正好,明天也不用買菜了,讓章阿姨做了,我們都嘗嘗。」
「不是……」
沈亢還想說什麼。
周曼直接大手一揮,「就這麼定了。」隨後樂呵呵地吃飯,心想,讓你小子剛才那麼損我。
高冷男神沈亢也繃不住了,嘆了口氣,也沒轍,只好繼續吃飯。
周曼看這小子挺鬱悶的樣子,心情就更舒暢了,一頓飯吃完,也不等明天了,立馬催著沈亢帶她去「藏匿」蛇皮袋的地點——沈亢的臥室——拿了幾包牛肉乾出來。
隨後,就拉著何秋竹陪著她在客廳里看電視,當然,最主要的,是把牛肉乾拆開了,當著沈亢的面吃。
只是剛吃兩口,周曼就問了一句:「你員工是川西的?」
沈亢正跟蕭伯年在開間書房這邊喝茶呢,跟客廳是連通的,也就不動聲色地回了一句:「嗯。」
周曼頭也沒回,就只是說道:「我說呢,味道還挺對的,挺正宗。」
味道不對就有鬼了。
沈亢心頭腹誹,也不管那邊了,把杯子裡的茶喝完後,就迫不及待地邀請蕭伯年來一場pk——《天龍八部》里的那種。
請收「藏「」「」小」說」唯」一「網」址」:「「」」.」」「」」」」.」「」」,「站」「長」只「有這一個網「站,其它網「站隨「時斷「更。」
這幾個月,他實在是被蕭伯年的腳本折磨鬱悶,總是打不贏。唯一贏的那次,還是蕭伯年忘了開腳本了。
現在到了線下,總算是能監督蕭伯年不開腳本,光明正大地來一場男人之間的戰鬥了。
當然,以防萬一自己還有可能輸的情況,沈亢直接要求去蕭伯年的房間,兩個人關起門來打。
蕭伯年就笑,答應了。
……
這是沈亢第一次進入蕭伯年的臥室。
一進門,先聞到一股極淡的茶香,混著紙張和一點木質家具的氣味。
床鋪平整,深灰色被面,兩個枕頭並排靠規矩,床頭只放了一副備用眼鏡和一本翻開的《統計自然語言處理》,上面壓著一支鉛筆。
靠窗的位置擺著一張長桌,放著一個台式機,線都順到桌下,沒有一根搭在明面上。顯示器邊上擱著個黑色機械鍵盤,鍵位間隙里不見灰。
再過去是一面書架,從地板頂到天花板,書脊朝外,高低排列嚴絲合縫。
沈亢粗粗掃一眼,大半是計算機、數學、語言學方向,還有幾層是歷史、哲學和一些舊發黃的文學刊物。
牆面上幾乎沒掛東西,只書架旁釘了一塊白板,上面貼著幾張便簽,寫著幾個公式和兩行英文,角落裡還粘著一個箭頭,指向一句話:「先跑起來,再談最優。」
桌上唯一顯有點「亂」的,是一隻透明的玻璃杯,裡面剩著半杯涼透的白水。杯壁乾淨,連個指紋都沒有。
沈亢往裡走兩步,發現床邊還擱著一雙深藍色的室內拖鞋,擺筆直,鞋頭朝外,像隨時準備穿上。
另一邊牆角,立著一個黑色網球包,拉鏈拉到頭,手柄朝上。
整個房間安靜、克制、理性,像一間被臨時借用的學者書房。沒有多餘的裝飾,沒有任何能看出情緒波動的東西。
「坐吧。」
蕭伯年從外面又拉了一張椅子進來,放到了長桌、那個台式機旁放下。
沈亢則是在打量一圈後,重新把目光放回到了那個台式機上。
「蕭教授,你這是把家裡的電腦也搬過來了?」
他是去過蕭伯年的那個屬於他自己的「家」的,也進過蕭伯年的書房,裡面那個電腦,就跟眼前這個一模一樣……哦,不對。
「好像不是那台?」沈亢自己先駁斥了自己之前的結論,「換了一台?」
「嗯。」
蕭伯年沒閒著,給沈亢搬過來椅子後,又去倒了兩杯水來,放到了長桌上,「又配了一套。」
沈亢點點頭,覺這很符合蕭伯年的個性——謹慎。估摸著,他還是隨時做好了那邊出事、回去應付的準備的。那樣的話,那邊沒了電腦就是一個惹人懷疑的破綻了,所以,就另外又配了一台電腦。
隨後,沈亢不動聲色地說道:「那我用你這台電腦吧。」
就算蕭伯年有腳本,那也是在這台電腦上,而自己的電腦是沒有腳本的。自己用蕭伯年的電腦,讓蕭伯年用自己的電腦,那就可以不用特意說就能杜絕蕭伯年開掛了,完美。
蕭伯年也沒意見,答應了。
兩人就這麼坐了下來,開機,登陸了各自的帳號,然後去校場開始pk。
二十分鐘後
「不打了。」
沈亢鬱悶地把滑鼠一推。
連輸七把,打個屁。
蕭教授好像還真沒開掛,但自己就是一直輸。
他就納了悶了,《天龍八部》里的pk也沒什麼技術含量啊,自己跟蕭教授的裝備石頭也都差不多,怎麼就一直打不過蕭伯年呢?
蕭伯年坐在一旁,拿著一杯水喝著,看著他,暗想自己是不是太認真了?要不然,再跟他來一把,故意放水,輸給他兩把?……
蕭伯年正想著,沈亢已經放下了鬱悶,眼睛炯炯有神地對著蕭伯年看了過去,開口了:「蕭教授,我為什麼打不過你?可以講講嗎?」
蕭伯年一怔,旋即暗自感嘆:不沉浸在失敗中,在基於人類基因的固有性失敗挫折後,立刻掙脫基因的束縛,第一時間就去探尋原因,隨後改正,提升,最終,戰勝對手——這就是沈亢這孩子啊。
隨後,也完全坦誠,說出了自己一直贏的原因,給沈亢解惑。
「你輸,不是因為思路、手速這些原因,而是輸給了伺服器。」
「輸給了伺服器?」
沈亢納悶,聽不太懂。
蕭伯年解釋了起來:「你一直在用『高性能』模式操作。鍵盤敲飛快,指令一個接一個,全在搶跑。但《天龍八部》的pk不看你按多快,它看的是指令隊列。」
「……蕭教授,咱們能說人話嗎?」
蕭伯年一笑,把椅子轉了個方向,正面看著沈亢,更詳細地解釋:「你每按一個技能,客戶端要先在本地判斷你的狀態、目標、冷卻,然後才把請求發給伺服器。伺服器再判斷一次,返回結果。這中間有延遲。你按太快,指令在緩衝區里堆著,客戶端還在處理上一輪的技能動畫。你的操作指令和實際生效的時間之間,有一個空窗。」
「這個空窗里,你的角色會提前泄漏一些信息。比如說,你下一個技能如果是突進,客戶端的路徑預測就會先動一下。你如果是放控制技能,角色會有一個極短的抬手動畫。你自己看不到,或者看到了也沒注意。」
「但我看到了。」
「……」
沈亢好像聽懂了,「所以蕭教授,你是看動作來預判?」
蕭伯年點頭,又搖頭:「嚴格來說,不是預判,是觀察你的客戶端在做『預測執行』。」
「它為了快,會提前猜測你要幹什麼,提前加載一些資源,這些推測在你真正按下技能之前就已經開始了。我只需要盯著那些被提前加載出來的痕跡,就能知道你下一步要按什麼。」
沈亢愣了:「這遊戲還有這機制?」
「所有複雜的客戶端都有。」
蕭伯年還舉了一些其他的例子:「不一定是遊戲,作業系統、瀏覽器,甚至cpu本身,都是這麼工作的。為了快,提前算。這叫預測執行,英文叫pculatv cutn。」
沈亢將信將疑,「好傢夥,聽起來好玄學啊,cpu還知道我下一步要幹什麼?聽著跟算命一樣。」
他都想讚美愚者了。
蕭伯年笑了笑:「你覺玄,是因為你只看到了遊戲。但在計算機體系結構里,這是早就被驗證過的事。cpu內部有個東西叫分支預測器,遇到判斷、循環、跳轉這些指令,它不會等條件算完再決定走哪條路,而是先猜一條執行。猜對了,省時間;猜錯了,就把結果丟掉,回退重來。這就是預測執行。」
沈亢點頭:「這個我懂,猜對了贏時間,猜錯了白干。」
「對。猜,總比不猜好。就好像同聲傳譯,做同傳的人,聽到前面幾個字,就已經在腦子裡預測後面的句子結構了,甚至嘴都開始動了。大多數時候,預測是對的,整場翻譯能跟上節奏。偶爾預測錯了,停下來糾正一下。但總比一句一句等原話講完才翻譯快多。」
蕭伯年似乎談興起來了,說完這個例子,又說道:「但你知道嗎,英特爾當年不是沒想過另一條路。」
「什麼路?」
「放棄預測執行。」
蕭伯年說:「英特爾和惠普一起搞過一個架構,叫安騰。當時他們的想法很激進:既然預測會猜錯,猜錯了還要付出代價,那不如乾脆不讓硬體去猜。把指令調度、並行判斷這些事,全部交給編譯器。編譯器提前把指令排好,cpu照著執行就行,不需要預測,也不需要複雜的亂序執行。」
沈亢聽入神:「聽上去很合理啊。」
蕭伯年點頭:「理論上很美好。但安騰最後失敗了,而且敗很慘。」
「為什麼?」
「因為編譯器做不到那麼聰明。大部分程序運行時候的信息,編譯器根本預測不到,比如用戶輸入什麼、網絡返回什麼、內存里哪個地址會被訪問。這些只有運行的時候才知道。」
「硬體預測雖然有猜錯的風險,但大部分情況下它猜很快、很準。安騰把寶全押在編譯器上,結果很多現實場景下,指令並行度根本排不起來,性能上不去,兼容性又差,最後被am和英特爾自己的86架構打沒有還手之力。」
沈亢若有所思:「所以,預測執行雖然會猜錯,但還是比不預測強。」
蕭伯年說:「對。預測執行是拿『可能猜錯的代價』換『大概率猜對的收益』。從工業界最終的勝出結果來看,這條路走對了。」
「這樣啊……」
沈亢緩緩點頭,若有所思,隨後,微微皺眉。
預測執行,猜對了就搶到時間,猜測了就回退……
他怎麼感覺,自己好像在哪裡聽到過這種東西?
而且,為什麼,自己的心跳都慢慢加快了?
他聽見自己的心跳,不吵,但很重,一下一下,像有人在胸腔深處敲門。
像獨自站在深夜的荒原上,忽然聽見遠處傳來一聲極低的、沒有人聽過的恐怖獸鳴。