亚洲国产电影-久久久久久精品免费免费-韩国外遇2015无删减在线观看-天堂资源在线观看|www.hankcare.xyz

 
蘇州網(wǎng)站建設(shè)熱線: 13338701110  
 
十多年網(wǎng)站建設(shè)推廣經(jīng)驗(yàn),打造會(huì)賺錢的企業(yè)網(wǎng)站 
 
 
商贏首頁
Home
關(guān)于我們
About Us
新聞中心
News Center
網(wǎng)站建設(shè)
Websitem
域名空間
Domain name
企業(yè)郵箱
E-mail
網(wǎng)站優(yōu)化
Website
網(wǎng)站推廣
promotion
成功案例
Cases
聯(lián)系我們
Contact Us
 
 
 
 
網(wǎng)站優(yōu)化
  外部連接
  關(guān)鍵字密度優(yōu)化
  內(nèi)部連接優(yōu)化
  程序優(yōu)化
 
 
蘇州網(wǎng)站建設(shè)
 點(diǎn)擊這里給我發(fā)消息  點(diǎn)擊這里給我發(fā)消息  
 
網(wǎng)站優(yōu)化
當(dāng)前位置:首頁 > 程序優(yōu)化> 正文
 
 
程序優(yōu)化

         到了allaboutprogram后被人叫做"性能狂人",我也不知道為什么會(huì)有這個(gè)稱號(hào),其實(shí)我并不是一個(gè)偏激的人,相反我很隨和,平易近人...(哈哈)。為了與新的身份大致相符,所以嘗試寫篇文章,寫寫自己理解的優(yōu)化的三個(gè)級(jí)別。
        有人不談優(yōu)化,甚至憎惡優(yōu)化,我只能說那只是因?yàn)樗麤]有能力做到!那是他還不能按時(shí)寫出程序、不能寫出正確的程序、不能寫出規(guī)范的程序。很多優(yōu)秀的程序員都喜歡追求最快的程序速度,我想大多數(shù)程序員可能都想使自己寫的程序能夠比別人寫的程序運(yùn)行得更快;
優(yōu)化前需要問自己的幾個(gè)問題:為什么要優(yōu)化 、優(yōu)化的目標(biāo)是什么、哪些部分才需要優(yōu)化、能夠接受由此帶來的可能的資源消耗(人力、維護(hù)、空間等)嗎?
        程序優(yōu)化有三個(gè)層級(jí);它們依次產(chǎn)生更顯著的優(yōu)化代碼,在考慮優(yōu)化方案時(shí)可以嘗試從不同的層級(jí)著手思考優(yōu)化的方案:
        (也許有人表達(dá)過這些觀點(diǎn)了,但這也是我對(duì)優(yōu)化的實(shí)際理解 ;我的分類方法主要依據(jù)了具體去實(shí)現(xiàn)一個(gè)優(yōu)化時(shí)思考問題的切入角度來劃分的,有時(shí)候他們之間的界限也并不明顯,具體是不是產(chǎn)生更顯著的優(yōu)化效果也不是確信的)
        第一級(jí):代碼調(diào)整
       代碼調(diào)整是一種局部的思維方式;基本上不觸及算法層級(jí);它面向的是代碼,而不是問題; 所以:語句調(diào)整,用匯編重寫、指令調(diào)整、換一種語言實(shí)現(xiàn)、換一個(gè)編譯器、循環(huán)展開、參數(shù)傳遞   優(yōu)化等都屬于這一級(jí);
       這個(gè)級(jí)別的優(yōu)化需要掌握大量的小的優(yōu)化技巧和知識(shí),需要不斷的積累;
       簡單的語句調(diào)整、公共表達(dá)式提取、廢代碼刪除等當(dāng)前的很多編譯器也能做到了,但也需要了解一些編譯器的優(yōu)化能力使自己的代碼配合編譯器做好優(yōu)化; 
       用匯編重寫并不是簡單把高級(jí)語言改寫為匯編實(shí)現(xiàn),那樣寫的匯編很可能沒有當(dāng)今的編譯器產(chǎn)生的代碼好,所以如果決定用匯編實(shí)現(xiàn),那就應(yīng)該按照匯編的角度來規(guī)劃自己的實(shí)現(xiàn),適當(dāng)?shù)膮⒖季幾g器生成的匯編碼也是可取的(特別是新手,我也一樣);在某些領(lǐng)域,使用CPU的新特性和新的指令集等將產(chǎn)生巨大的性能收益,這些地方經(jīng)常采用匯編來實(shí)現(xiàn)。
      第二級(jí):新的視角
      新的視角強(qiáng)調(diào)的重點(diǎn)是針對(duì)問題的算法;即選擇和構(gòu)造適合于問題的算法;(冒泡排序還是快排的選擇問題是這一級(jí)早就應(yīng)該完成的)很多經(jīng)典算法都對(duì)問題作了一些假設(shè)(包括我們當(dāng)前已經(jīng)完成的算法實(shí)現(xiàn)),而在面對(duì)實(shí)際問題時(shí)“新的視角”提示我們應(yīng)該重新檢視這些假設(shè),并嘗試不同的思考問題的角度,尋求適合于問題的新算法;
       發(fā)掘問題的本來意義,從不同的角度思考面對(duì)的問題,使用適合于問題的的算法; 嘗試打破一些規(guī)則,發(fā)掘和懷疑自己的某些假定,恢復(fù)問題的本來面目;
       第三級(jí):表驅(qū)動(dòng)狀態(tài)機(jī) 
       將問題抽象為另一種等價(jià)的數(shù)學(xué)模型或假想機(jī)器模型,比如構(gòu)造出某種表驅(qū)動(dòng)狀態(tài)機(jī);這一級(jí)其實(shí)是第二級(jí)的延伸,只是產(chǎn)生的效果更加明顯,但它有其本身的特點(diǎn)(任何算法和優(yōu)化活動(dòng)都可以看作是他的投影);這一級(jí)一般可以產(chǎn)生無與倫比的快速程序, 要達(dá)到這一級(jí)需要大量修煉的;并且思考時(shí)必須放棄很多已有的概念或者這些概念不再重要,比如:變量、指針、空間、函數(shù)、對(duì)象等,剩下的只應(yīng)該是那個(gè)表驅(qū)動(dòng)狀態(tài)機(jī); 我想把這種境界描述為:空寂中,一些輸入驅(qū)動(dòng)著一個(gè)帶有狀態(tài)的機(jī)器按設(shè)定好的最短路線運(yùn)轉(zhuǎn)著;除此之外have nothing; 既:把解決一個(gè)問題的算法看作一個(gè)機(jī)器,它有一些可變的狀態(tài)、有一些記憶、有一些按狀態(tài)運(yùn)行的規(guī)則,然后一些輸入驅(qū)動(dòng)這個(gè)機(jī)器運(yùn)轉(zhuǎn);這就是第三級(jí)要求的思考優(yōu)化問題的切入點(diǎn),也就是尋找一部機(jī)器,使它運(yùn)行經(jīng)過的路徑最短(可能是速度也可能是空間等等)
        要掌握一級(jí)優(yōu)化,是很多人經(jīng)過努力都能夠達(dá)到的層次,需要的是不斷的積累各方面的技巧就行了(雖然很繁瑣),寫出的代碼可以稱為“好的代碼”;
       要掌握二級(jí)優(yōu)化,需要的是對(duì)問題的理解能力和一些創(chuàng)造力,能夠針對(duì)問題產(chǎn)生新的見解;寫出的代碼可以稱為“優(yōu)秀的代碼”;
      要掌握三級(jí)優(yōu)化,必須具有豐富的想象力和創(chuàng)造力,需要大量的修煉和對(duì)問題本質(zhì)的苦苦思索;寫出的代碼可以稱為“非凡的代碼”;
      能夠?qū)⑦@三個(gè)層級(jí)的優(yōu)化熟練運(yùn)用(我想把這種境界稱作“綜級(jí)優(yōu)化”)的人必須掌握比別人更多的知識(shí)、了解更多的知識(shí)領(lǐng)域、了解最底層的技術(shù)和最高層的抽象;并且還要求有豐富的實(shí)踐經(jīng)驗(yàn)、想象能力和創(chuàng)造能力; 這些都是不可或缺的;
     警示:不是所有的代碼(項(xiàng)目)都需要優(yōu)化
     警示:不是每個(gè)人都要去做優(yōu)化工作
     警示:優(yōu)化是有方向和側(cè)重點(diǎn)的,不只是單純的速度
     警示:首先是正確,然后才有優(yōu)化
     警示:簡潔的代碼,很多時(shí)候就是最好的代碼
     警示:優(yōu)化不是一種理論,它是一種實(shí)踐
     警示:充分優(yōu)化的笨拙算法實(shí)現(xiàn)始終比不上一個(gè)更好的算法的普通實(shí)現(xiàn),即優(yōu)化首先是設(shè)計(jì)的優(yōu)化
     警示:代碼優(yōu)化是門黑色藝術(shù),代碼的優(yōu)化永無止境
     警示:無論是誰,他的資源也不是無限的,代碼優(yōu)化要避免過猶不及
     警示:如果確信不需要優(yōu)化,那根本不進(jìn)行優(yōu)化,就是最好的優(yōu)化!

首页 | 关于我们 | 新闻中心 | 网站建设 | 域名空间 | 企业邮箱 | 网站优化 | 网站推广 | 人才招聘 | 联系我们| 网站地图