天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

沒事兒別優(yōu)化!

  本文是從 Don’t optimize! 這篇文章翻譯而來。

  事實(shí)上你應(yīng)該優(yōu)化,但要在正確的地方,有足夠的理由。我待會兒再聊這個。

  我最近和在 Badgerpunch Games 的幾位朋友一起發(fā)布了一個小的以XNA為基礎(chǔ)的游戲,而且通過論壇和Twitter與這個獨(dú)立的游戲開發(fā)組織保持密切的聯(lián)系。游戲開發(fā)者十分在意性能問題,而且這很必要。沒有人想要一個運(yùn)行不暢的游戲。因?yàn)檫@些對性能的擔(dān)憂,出現(xiàn)了很多關(guān)于優(yōu)化技巧的提示和論文,都圍繞著如何能實(shí)際有效的緩解性能問題。大多數(shù)的技巧提示和文章都提供了有價(jià)值的信息、有相應(yīng)的用處,但你會發(fā)現(xiàn)很少有文章能觸碰到性能優(yōu)化上的主要問題:什么時候不該優(yōu)化,為什么。

  優(yōu)化就是這樣的事:你的程序可以一直優(yōu)化下去,但工時上的開銷和取得的效果的對比會很快讓你陷入困境。我記起了九十年代早期在 Amiga Demo 公司的一幕。我大概花了半年的時間去優(yōu)化那個3D旋轉(zhuǎn)的匯編程序片段。最終我覺得該優(yōu)化的幾乎都優(yōu)化了。起初幾周我努力減少CPU的指令循環(huán),獲得了驚人的減幅!但隨后的數(shù)月里,我?guī)缀鯖]法再進(jìn)一步的壓縮,最終只得放棄…我這段程序超級的快,可是,其他程序員的3D圖形跑的比我還要快,我無法理解,這怎么可能?

  直到數(shù)年后我在大學(xué)里學(xué)了矩陣后我才明白其中的奧秘。我的程序里每個3D坐標(biāo)用9次乘法,這是一個沒有優(yōu)化的矩陣算法,它可以被壓縮成6次乘和兩個加法,這樣每個坐標(biāo)點(diǎn)可以節(jié)省數(shù)百次的CPU指令循環(huán)…太郁悶了!

  這個故事的寓意?你可以優(yōu)化你的程序,讓它像星星一樣閃亮,但如果有人有更好的算法,讓同樣的程序跑的更快,你還是很失敗。

  你很失敗嗎?只是在有意義的時候才能這樣說。在上面的性能優(yōu)化的故事里,3D旋轉(zhuǎn)效果是被限制在一個16位的機(jī)器上的,這種情況下最快的程序證明了最出色的程序員,這時它的意義就很大了。 

  這讓我們回到了最初的那個問題。不要優(yōu)化——如果優(yōu)化是無關(guān)緊要的。重要的是讓你的代碼簡單易懂,容易修改!當(dāng)你的程序具有這三個特征時,它是否被優(yōu)化已經(jīng)無關(guān)緊要了。

  如果程序太慢,使用一個分析工具,找到什么地方需要優(yōu)化。有時你并不需要一個分析工具,你只需要根據(jù)你的實(shí)際數(shù)據(jù)進(jìn)行優(yōu)化。當(dāng)你找到了問題的區(qū)域,盡可能的用最簡單的方式修改它們,看看修改后有什么效果。最終讓你的程序達(dá)到到可以接受的性能程度。如果還不行,你需要根據(jù)你的代碼做算法上的修改。這就是為什么要保持代碼簡潔、易于修改的原因了。

  讓代碼保持簡單易讀、易于修改的主要原因是為了尋找bug,這是一個閱讀和修改代碼的過程。程序越易懂,問題越容易修改。這是毫無疑問的…可是仍然有人堅(jiān)持把事情能的盡可能的復(fù)雜,只是為了滿足個人的野心!我曾經(jīng)看到一段Java代碼里有多層遞歸調(diào)用的if語句。這是一個最糟糕的無意識里做出的損毀程序的事。必然的,到處都是bug …看的我想哭。

  另外一個保持代碼簡潔的原因是以最簡單的方式告訴編譯器你的程序的意圖。編譯器對簡單的代碼有更好的優(yōu)化能力。如果你是一個虛擬機(jī)上使用JIT編譯器,這更顯的重要。虛擬機(jī)和按需編譯可以使你的程序能在不同的VM版本上運(yùn)行。基本上虛擬機(jī)版本越新,你的代碼越簡單,當(dāng)程序運(yùn)行時,你就能獲得更好的優(yōu)化結(jié)果。

  早期版本的Java虛擬機(jī)做很少的編譯優(yōu)化,所以像for循環(huán)、反向計(jì)數(shù)等技巧可以節(jié)省一些循環(huán)。但是最新版的編譯器和按需優(yōu)化處理針對最常見的for循環(huán)形式進(jìn)行了優(yōu)化。性能問題從代碼轉(zhuǎn)移到了虛擬機(jī)上,長時間運(yùn)行的程序在代碼上的優(yōu)化技巧不再具有很重的份量。

  所有的論述濃縮成這個:除非你知道優(yōu)化什么,否則別去優(yōu)化。這并不是說你不需要去考慮性能問題。你始終應(yīng)該把性能問題放在心上。它有可能是你算法選擇上的問題,設(shè)計(jì)、實(shí)現(xiàn)上的問題,但你的主要精力應(yīng)該放在保持代碼簡潔易讀,易于修改上。

it知識庫沒事兒別優(yōu)化!,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在教室轮流被澡高H林萌 | 在线看片韩国免费人成视频 | 老板吻我下身好爽到高潮 | 语文老师扒开胸罩喂我奶 | xxx粗大长欧美 | 色情在线avav | 男人J放进女人P全黄网站 | 喜马拉雅听书免费版 | 国产高潮久久精品AV无码 | 亚洲风情无码免费视频 | 乱叫抽搐流白浆免费视频 | 成人无码在线视频区 | 尤物久久99国产综合精品 | 操老太太的逼 | 日本久久高清视频 | 久久er99热精品一区二区 | 把极品白丝班长啪到腿软 | 亚欧免费观看在线观看更新 | 少妇系列之白嫩人妻 | 国产亚洲一区二区三区啪 | 无码AV精品久久一区二区免费 | 高清国产在线播放成人 | 亚洲精品久久久久AV无码林星阑 | 午夜亚洲精品不卡在线 | 最近最新中文字幕MV高清在线 | 亚洲免费无l码中文在线视频 | 乳交高H糙汉宠文 | 东北老妇人70OLDMAN | 久久香蕉国产免费天天 | 日日天干夜夜狠狠爱 | 一区二一二 | 青青伊人影院 | 国产香蕉尹人视频在线 | 亚洲视频在线免费观看 | 91亚洲 欧美 国产 制服 动漫 | 国产高清精品国语特黄A片 国产高清国内精品福利色噜噜 | 鬼灭之刃花街篇免费樱花动漫 | 亚欧日韩毛片在线看免费网站 | 91进入蜜桃臀在线播放 | 国产久久re6免费热在线 | 美女被爆羞羞天美传媒 |