對於「負優化」,大家都談論了很多。顯卡玩家談論「負優化」,談的是氫彈變原子彈,新驅動一出老卡性能不升反降;手機玩家談論「負優化」,談的是新系統推送天地滅,iPhone瞬間卡得像塞班。
沒錯,在這個高速發展的資訊時代,新軟體新技術層出不窮,然而這些新事物帶給用戶的,卻並不一定是更好的體驗。軟體、系統、驅動等等,新版比老版坑爹的情況,似乎並不是都市傳說。「負優化」現象真的存在嗎?如果真的有,為什麼開發者會如此餵屎?今天,就讓我們來談談「負優化」的話題吧。
新軟體不可避免「負優化」:安迪-比爾定律
按理來說,新產品需要有所優化,比舊產品的用戶體驗更好,消費者才會買單,但新軟體比舊軟體更慢更卡的現象,卻層出不窮。遠有Windows Vista肆虐用戶內存慘案,近有iOS新系統狂殺App後臺悲劇,新版軟體對比舊版,體驗還真不一定更好。
儘管蘋果軟硬體結合出色,但新版的iOS在性能方面往往是「負優化」
為什麼會變成這樣呢?新版軟體帶來了更漂亮的界面和更強大的功能,兩者結合在一起,本應帶來更好的用戶體驗;沉浸在全新用戶體驗的美好時光,本來已經觸手可及,然而,為什麼會變成這樣?這就不得不提到聞名業界的「安迪-比爾定律」。
所謂安迪-比爾定律,安迪指的是Intel前CEO安迪-魯夫,比爾則是大家都知道的比爾-蓋茨。這條定律可是把這兩位IT大佬狠狠黑了一把啊。
安迪-比爾定律的含義就是,安迪給啥,比爾拿啥;Intel產多猛的硬體,微軟會用越來越臃腫的系統和軟體統統吃掉增長的硬體性能。雖然這定律說的是Intel和微軟,但套在其他軟硬體廠商身上,也沒什麼違和感。安迪-比爾定律,實質上所描述的,就是軟體臃腫化的問題。
Intel的安迪微軟的比爾,這定律可讓Wintel聯盟大賺了不少
無論是新軟體更漂亮的界面,還是更強勁的功能,都是需要更強大的硬體作為基礎的,總不能要求奔騰MMX能跑得動Win系統的Aero特效。摩爾定律讓「晶片每18個月性能提高一倍,價格減半」,但安迪-比爾定律足以讓摩爾定律無功而返。而如果你的錢包沒有跟上摩爾定律的增長,沒更換新硬體,就難以享受到新軟體帶來的快感,安迪-比爾定律作用下,新軟體也就變成了「負優化」。
QQ的功能和界面都和十幾年前不可同日而語,硬體需要也翻天覆地
安迪-比爾定律還有一個特點,那就是摩爾定律作用越明顯、更迭越迅速的平臺,越容易發生軟體臃腫化現象。有個好的反例就是遊戲機平臺,遊戲機的硬體升級極慢,數年都不換,而遊戲對硬體的要求,卻沒有水漲船高,甚至還出現越後期的遊戲,對硬體的優化越好的情況。這主要是因為封閉而穩定的平臺,有利於開發者深耕細作。而一年一換甚至半年一換的手機,壓根沒法做到這點,軟體應用不得不尾隨進化神速的硬體平臺更新,優化效果難以保證,也是理所當然的了。
移動平臺進化速度最快,所以「負優化」也是最明顯的,App和系統都普遍越來越卡
簡單來說,為了充分利用新硬體的性能,軟體開發商會想辦法在軟體中塞入更多的特性功能,而這些東西,對老硬體卻是不友好的。破除安迪-比爾定律帶來的「負優化」,唯一之道就是錢包君,大家努力賺錢吧。
開發疏忽造成的「負優化」:不上心
雖說因為安迪-比爾定律,軟體的「負優化」發展幾乎是必然的,但在歷史的洪流中,也有人為過失造成的翻船。一些坑爹的「負優化」,完全是自作自受,別想把鍋甩到「大勢所趨」身上。這往往是因為開發者的能力有限或者疏忽所造成的,下面就舉一些例子,大家可以感受感受。
◆Android音頻架構
長久以來,在機友中流傳這這樣一個說法:Android手機的音質遠不如iOS。事實是否真的如此?在大多數情況下,這種說法的確是成立的。原因很簡單,Google對Android音頻部分不上心,一些不當設計,造成了Android音質的「負優化」。
在Android 2.X時代,在音質上存在一個非常嚴重的SRC問題。所謂的SRC問題,指的是音頻採樣率重採樣,例如採樣率44.1kHz的音頻被SRC到48kHz。這種非整數倍的SRC,會造成音質損失。在Android 2.X時代,Android系統會把48kHz的音頻強制轉換到44.1kHz,之後,高通晶片又會把44.1kHz強制SRC到48kHz輸出,兩次非整數倍的SRC後,音質慘不忍睹,這就是為何高通 Android會造成音質慘案的原因。
非整數倍的SRC會對原始波形造成破壞,損壞音質
這個問題是否可以避免?其實通過對底層音頻驅動的修改,是可以解決問題的。但是,Google和高通並沒有採取正確的解決方案。Google和高通為了解決音質劣化的問題,所推出的新方案並不是根據原始音頻自動切換輸出採樣率,而是使用高精度算法進行SRC。在高通的QRD方案中,使用高通晶片的Android系統音頻會強制SRC到48kHz,SRC的新算法效果不錯,和之前比,音質的確有所進步。
但是,這並沒有從根本上解決問題,無論非整數倍的SRC多麼高精度,仍不可避免地會帶來音質劣化。同時,高精度的SRC算法對硬體也有很高的需求,這造成了一些手機放歌卡頓、發熱、耗電甚至爆音。這些負面影響,在Google自己的Nexus手機上就有出現,系統資源吃緊的時候,體驗比之前還更差。
現在很多國產手機打Hifi的口號,Hifi與否先不說,但它們當中的確很多都解決了SRC
那麼問題如何徹底解決?其實第三方手機廠商,已經交出了答卷——只要輸出正確的採樣率、不進行SRC即可。很多手機廠商,特別是國內廠商例如VIVO、魅族、小米等等廠商都解決了SRC問題,這甚至比Google改進SRC算法的時間更早。同時,XDA論壇也有野生的開發者給出了徹底解決SRC的方案。然而,Google官方的原生系統至今仍未徹底解決,Android L發布時就說優化了音質,但直到現在Android音質仍有缺陷。這種音質上的「負優化」,實在不應該出現。
◆遊戲移植
為了讓新玩家感受到老遊戲的魅力,很多廠商都會把老遊戲移植到新平臺上。如果是考慮得比較妥當的開發商,會充分發掘新平臺的優勢,讓老遊戲展現得更有魅力。然而現實很殘酷,更多的情況是,移植的遊戲不僅沒有被優化,而且還會出現「負優化」,能玩就不錯了!
移植遊戲被「負優化」的情況是很普遍的。例如光榮出品的《生或死5》,從遊戲機上移植到了性能更強的PC平臺,不僅畫質下降,還砍掉了乳搖等賣點;又例如《忍龍2》,從PS3移植到PSV,畫質降低可以理解,但無法完成遊戲這點就難以理解了——這遊戲有一個關卡是需要兩個玩家合作(AI無法勝任)通過才能獲得獎盃的,但PSV版取消了聯機功能,獲得獎盃成為了不可能的事情。這些「負優化」,顯然是不應該出現的。
在遊戲機平臺上好評如潮的遊戲,登陸PC後收穫一堆差評,可想而知是怎樣的「負優化」
移植遊戲也不是沒有優化得好的例子,例如《最後生還者》的PS4移植版,優化效果就有口皆碑。但是更多的遊戲廠商只是想在新平臺隨便應付坑一筆錢,連冷飯都懶得炒好,導致了「負優化」。
◆殺軟更新造成誤殺
如果說上面的「負優化」只是影響使用,那麼這種就真的可以算是破壞生產了。不少殺軟在更新病毒庫的時候,都出現過大面積的誤殺,甚至會把系統文件殺掉,造成無法開機的情況!例如,Avast「2009-12-03-0」病毒庫就出現過大面積誤殺,McAfee的「DAT 5664」病毒庫曾把系統文件當成病毒來殺導致藍屏,諾頓也出現過類似情況。
不少殺軟都鬧過誤殺烏龍,甚至導致藍屏
病毒庫更新本來是為了優化殺軟的反病毒性能,但因此造成誤殺事故,顯然是測試不充分造成的。這種「負優化」,完全不該發生。
除了上文的例子,還有很多因為人為疏忽造成的「負優化」,這裡就不一一舉例了。這些「負優化」,有時候用戶都知道該如何解決,但廠商就是不用心,沒動作,非常氣人。
最沒良心的「負優化」:利益驅動
如果說前面因為人為疏忽造成的「負優化」只是氣人,那麼下面要說的因為利益驅動而故意造成的「負優化」,簡直就是犯罪了。現在的風氣非常不好,一些開發商為了眼前的利益,拼命把應用軟體做得流氓,軟體變流氓的同時,自然而然也帶來了「負優化」。
不知道從什麼時候開始,各種軟體突然變得很喜歡把奇怪的東西塞進自己裡面。一個好好的聊天軟體,突然就多出了新聞瀏覽安全殺毒等功能;一個好好的瀏覽器,突然就多出了安全殺毒社交聊天等功能;一個好好的殺毒軟體,突然就多出了社交聊天新聞瀏覽等功能。平時裝三個軟體可以得到三種功能,現在裝三個軟體得到九種功能,什麼你說都是功能重複的?我聽不到。總之就是一片頂三片,療效特好,專治電腦性能過高!
聊天軟體都自帶一個應用商店,就問你怕不怕
這些行為的背後,是有利益驅動的。目前IT業界正處於從桌面端遷移到移動端、從本地遷移到雲端的劇烈轉型期,新興的應用環境層出不窮。受業界大環境的影響,專精於某一項功能的軟體變得越來越少,開發者們恨不得用一個安裝包就統治了用戶的使用環境,為前途和錢途鋪好路。在這種指導思想下,打鐵的也開始割麥子,煮飯的也開始負責煉鋼,各種軟體應用都長了一堆多餘的肥膘。
此外,國內一些軟體工作者為了業績,也會不顧用戶體驗,在產品中加入「負優化」。例如,一些公司是以軟體應用的活躍度來對員工進行業績考評的,於是開發部門就會動小心思,就算軟體不運行,也在後臺自動喚醒,以增加活躍度,這無疑會增加系統資源消耗,造成「負優化」。總之,在目前的大環境下,殺了兩三個流氓,還有無數後來人。恐怕,在比較長的一段時間內,流氓軟體帶來的「負優化」,仍會持續拜訪各位的手機電腦。
Android平臺上,隨便查一個App的喚醒觸發機制,都能嚇死你
在遊戲玩家中,還相傳著一種驅動的負優化。例如,顯卡廠商會用新驅動壓制老顯卡的性能,好讓玩家們掏荷包購買新核彈。玩家們猜測,基於銷售新顯卡的利益考慮,廠商有用新驅動降低老顯卡性能的動機。不過經過我們網站的實測,並非如此。下面是測試圖表,大家一起來看看。
老顯卡GTX780Ti在不同版本驅動下的性能表現
老顯卡R9 290X在不同版本驅動下的性能表現
可以看到,無論是N卡A卡,新驅動在老卡上,都沒有出現性能退步。更詳細的內容,可以點擊下面的文章查閱。
不過硬體驅動是不是真的一定沒有負優化?也不盡然。有時候驅動更新也會帶來一些問題,例如Win10就曾經自動更新N卡的驅動,導致出現故障。不過這些並不是基於利益的「負優化」,而是屬於開發疏忽。實際上,修改驅動降低顯卡性能也是需要人力時間成本的,而且很容易被揪到辮子,廠商應該還不至於去做這種下作的事情。
總結
「負優化」是否真的無法避免?根據「安迪-比爾定律」,從長遠來看,軟體對硬體的需求的確是節節上升的
。但是,也並不是沒有新版比舊版優化得更好的軟體,例如從Android 5到Android 7,從Vista到Win7,新版系統的確更有效率。而由於開發疏忽乃至利益驅動造成的「負優化」,要解決更是不存在技術上的問題。希望開發商能夠多多為用戶體驗考慮,讓產品少出現一些「負優化」吧。