亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c

?? C程序優(yōu)化 算法篇
??
字號:
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
	FONT-SIZE: 9pt; LINE-HEIGHT: 16px
}
A {
	COLOR: #003399; TEXT-DECORATION: none
}
A:hover {
	COLOR: #ff6600; TEXT-DECORATION: underline
}
.newtx {
	BORDER-RIGHT: 1px groove; BORDER-TOP: 1px groove; FONT-SIZE: 9pt; BORDER-LEFT: 1px groove; WIDTH: 120px; BORDER-BOTTOM: 1px groove; HEIGHT: 19px
}
.newbt {
	BORDER-RIGHT: 1px ridge; BORDER-TOP: 1px ridge; FONT-SIZE: 9pt; BORDER-LEFT: 1px ridge; WIDTH: 50px; BORDER-BOTTOM: 1px ridge; BACKGROUND-COLOR: #a2afc6
}
.a1 {
	COLOR: #000000; TEXT-DECORATION: none
}
.a2 {
	LINE-HEIGHT: 18px
}
.f1 {
	FONT-SIZE: 12px; LINE-HEIGHT: 20px
}
.f2 {
	FONT-SIZE: 12pt; LINE-HEIGHT: 22px
}
</STYLE>
<title>C程序優(yōu)化 - 算法篇</title>
</head>

<BODY BACKGROUND="..\back\bg.gif" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<h1 align="center"><FONT COLOR="#FF0000"><B><SPAN STYLE='font-size:18.0pt;mso-bidi-font-size:12.0pt'><FONT CLASS=title 
                        COLOR=#ff0000><B><BR>C程序優(yōu)化 - 算法篇</B></FONT></SPAN></B></FONT></h1><P ALIGN="CENTER"><B>liyuming1978(原作)</B></P><TABLE WIDTH="94%" ALIGN="CENTER"><TR><TD class=f2><P>I.從小處說起:</P><P> 
先說說一些小地方先:</P><P>① 比如n/2寫為n&gt;&gt;1這個是常用的方法,不過要注意的是這兩個不是完全等價的!因為:如果n=3的話,n/2=1;n&gt;&gt;1=1;但是,如果n=-3的話,n/2=-1;n&gt;&gt;1=-2所以說在正數(shù)的時候,他們都是向下取整,但是負(fù)數(shù)的時候就不一樣了。(在JPG2000中的整數(shù)YUV到RGB變換一定要使用&gt;&gt;來代替除法就是這個道理)</P><P>② 
還有就是a=a+1要寫為a++; a=a+b要寫為a+=b(估計一般用VB的才會寫a=a+1 :P)</P><P>③ 將多種運算融合:比如a[i++];就是先訪問a[i],再令i加1;從匯編的角度上說,這個確實是優(yōu)化的,如果寫為a[i],和i++的話,有可能就會有兩次的對i變量的讀,一次寫(具體要看編譯器的優(yōu)化能力了),但是如果a[i++]的話,就一定只讀寫i變量一次。不過這里有一個問題要注意:在條件判斷內(nèi)的融合一定要小心,比如:(idct變換中的0塊判斷,陳王算法)</P><P> 
if (!((x1 = (blk[8*4]&lt;&lt;8)) | (x2 = blk[8*6]) | (x3 = blk[8*2]) | (x4 = blk[8*1]) 
| (x5 = blk[8*7]) | (x6 = blk[8*5]) | (x7 = blk[8*3])))</P><P>  在條件判斷中融合了賦值語句,但是實際上如果條件為真的話,是不需要這些賦值語句的,也就是說當(dāng)條件真的時候,多了一些垃圾語句,這些是在h263源碼上的問題,雖然這些垃圾語句使得計算0塊的時候,時間增加了30%,但是由于idct僅僅占1%的時間,0塊又僅僅30%~70%的時間,所以這些性能損失是沒有什么關(guān)系的。(這是后來我用匯編改寫源碼的時候得到的結(jié)論)。這里也說明了,程序優(yōu)化一定重點在最耗時的地方。對于不耗時的代碼優(yōu)化是沒有太大的實用意義的。</P><P>II.以內(nèi)存換速度:</P><P>  天下總是難有雙得的事情,編程也是一樣,大多數(shù)情況,速度同內(nèi)存(或者是性能,比如說壓縮性能什么的)是不可兼得的。目前程序加速的常用算法一個大方面就是利用查表來避免計算(比如在jpg有huffman碼表,在YUV到RGB變換也有變換表)這樣原來的復(fù)雜計算現(xiàn)在僅僅查表就可以了,雖然浪費了內(nèi)存,不過速度顯著提升,還是很劃算的。在數(shù)據(jù)庫查詢里面也有這樣的思想,將熱點存儲起來以加速查詢。 
現(xiàn)在介紹一個簡單的例子,(臨時想的,呵呵):比如,在程序中要經(jīng)常(一定要是經(jīng)常!)計算1000到2000的階乘,那么我們可以使用一個數(shù)組a[1000]先把這些值算好,保留下來,以后要計算1200!的時候,查表a[1200-1000]就可以了。</P><P>III.化零為整</P><P> 
  由于零散的內(nèi)存分配,以及大量小對象建立耗時很大,所以對它們的優(yōu)化有時會很有效果,比如上一篇我說的鏈表存在的問題,就是因為大量的零散內(nèi)存分配。現(xiàn)在就從一個vb的程序說起,以前我用vb給別人編小程序的時候,(呵呵,主要是用vb編程比vc快,半天就可以寫一個)在使用MSFlexGrid控件的時候(就是一個表格控件),發(fā)現(xiàn)如果一行一行的增加新行,刷新速度十分的慢,所以我就每次增加100行,等到數(shù)據(jù)多到再加新行的時候,再加100行,這樣就“化零為整”了,使用這樣的方法,刷新的速度比原來快了n倍!其實這樣的思想應(yīng)用很多,如:程序運行的時候,其實就占用了一定的空間,后來的小塊內(nèi)存分配是先在這個空間上的,這就保證了內(nèi)存碎片盡可能的少,同時加快運行速度。 
IV.條件語句或者case語句將最有可能的放在前面</P><P> 優(yōu)化效果不明顯。想得到就用吧,想不到就算了。</P><P>V.為了程序的可讀性,不去做那些編譯器可以做的或者優(yōu)化不明顯的處理:</P><P> 
  這個是很重要的,一個普通程序的好壞,主要是它的可讀性,可移植性,可重用性,然后才是它的性能。所以,如果編譯器本身可以幫助我們優(yōu)化的話,我們就沒有必要寫那些大家都不怎么看得懂的東西。比如a=52(結(jié)束)-16(起始);這樣寫可能是因為在別人讀程序的時候,一下就明白了a的含義。我們不用寫為a=36,因為編譯器是會幫我們算出來的。</P><P>IV.具體情況具體分析:</P><P> 
  具體情況具體分析,這是放之四海而皆準(zhǔn)的真理。沒有具體的分析,就不能針對問題靈活應(yīng)用解決的辦法。下面我就說說分析的方法。即如何找到程序的耗時點:(從最簡單的辦法說起,先說明一個函數(shù)GetTickCount(),這個函數(shù)在頭尾各調(diào)用一次,返回值相減就是程序的耗時,精確到1ms)</P><P>① 
對于認(rèn)為是比較耗時的函數(shù),運行兩次,或者將函數(shù)內(nèi)部的語句注釋掉(要保證程序可以運行),看看多(或者少了)多少時間。這個辦法簡單不精確。 ② 每個地方都用GetTickCount()函數(shù)測試時間,注意GetTickCount()只能精確到ms。一般的小于10ms就不太精確了。</P><P>③ 
使用另外一個函數(shù)QueryPerformanceCounter(&amp;Counter)和QueryPerformanceFrequency(&amp;Frequency),前面計算cpu時鐘周期,后面是cpu頻率相除就是時間。不過如果你要精確到這一步的話,建議將進(jìn)程設(shè)置為最高級別,防止它被阻塞。</P><P>  最后講講我處理的一個程序:程序要求我忘了,反正里面有一個函數(shù),函數(shù)里面有一個大的循環(huán),循環(huán)內(nèi)部的處理比較耗時。結(jié)果最初程序表現(xiàn)出來的狀況是開始還很快,越到后面越慢;我在跟蹤程序中變量的時候,發(fā)現(xiàn)最初的循環(huán)在循環(huán)幾次后就跳出了,而后面的循環(huán)次數(shù)越來越多。找到了為什么慢的原因,就可以對癥下藥了,我的處理是每次循環(huán)不是從頭開始,而是從上一次循環(huán)跳出的地方開始左右循環(huán)(因為可能下一次循環(huán)跳出的地方別上一次的小,所以也要遍歷前面的),這樣程序的速度在后面也很快了。我講這個的道理就是在實際運用中,要具體的分析程序慢的真正原因,才能達(dá)到最佳的優(yōu)化效果。 
</P></TD></TR></TABLE><br> 
</body>

</html>
<html></html>亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

奇米一区二区三区av| 欧美日韩国产精品自在自线| 国产精品一区二区三区99| 蜜桃一区二区三区在线| 香港成人在线视频| 视频一区中文字幕| 视频一区二区三区中文字幕| 亚洲成人av在线电影| 日本欧美一区二区三区| 青青草国产成人99久久| 美女国产一区二区三区| 国产一区二区在线观看免费| 激情欧美日韩一区二区| 国产成人综合视频| 成人国产在线观看| 91免费看`日韩一区二区| 91国产免费观看| 51精品久久久久久久蜜臀| 欧美本精品男人aⅴ天堂| 国产三级精品在线| 亚洲卡通动漫在线| 亚洲一级二级三级在线免费观看| 香蕉久久一区二区不卡无毒影院| 免费成人在线观看| 高清beeg欧美| 色999日韩国产欧美一区二区| 欧美日韩视频在线一区二区| 欧美va日韩va| 国产精品毛片a∨一区二区三区| 亚洲日本一区二区| 日本亚洲天堂网| 国产精品乡下勾搭老头1| 97精品超碰一区二区三区| 欧美亚一区二区| 久久综合av免费| 亚洲免费在线观看视频| 爽爽淫人综合网网站| 国产一本一道久久香蕉| 91视频国产资源| 日韩一区二区三区免费看 | 色综合夜色一区| 678五月天丁香亚洲综合网| 久久众筹精品私拍模特| 一区二区三区毛片| 久久成人免费网| 99vv1com这只有精品| 日韩欧美亚洲国产精品字幕久久久| 日本一区二区三区国色天香 | 日韩精品一区二区三区四区 | 亚洲精品乱码久久久久久| 男女男精品视频| 色综合久久久久久久| 日韩一区二区在线看| 综合色中文字幕| 韩国精品在线观看| 欧美这里有精品| 国产欧美一区二区精品久导航 | 成人激情综合网站| 4hu四虎永久在线影院成人| 国产精品美女久久久久久2018| 午夜视频在线观看一区二区三区| 成人综合在线视频| 91精品国产综合久久蜜臀| 17c精品麻豆一区二区免费| 精品一区二区三区不卡| 91黄色免费看| 国产精品久久毛片a| 激情都市一区二区| 欧美一区二区三区视频在线 | 99精品国产热久久91蜜凸| 91精品国产全国免费观看| 亚洲天堂网中文字| 国产另类ts人妖一区二区| 欧美日韩一区三区四区| 国产精品女人毛片| 国产在线精品免费| 日韩免费看网站| 五月天丁香久久| 欧美色区777第一页| 综合久久一区二区三区| 丁香激情综合五月| 久久精品一区二区三区不卡| 日日摸夜夜添夜夜添精品视频| 91黄色在线观看| 亚洲老妇xxxxxx| 97精品国产露脸对白| 欧美国产日韩一二三区| 激情小说亚洲一区| 欧美成人欧美edvon| 日韩和欧美一区二区| 欧美羞羞免费网站| 亚洲韩国一区二区三区| 91激情在线视频| 亚洲影视在线观看| 在线观看亚洲一区| 亚洲综合免费观看高清完整版在线 | 日本系列欧美系列| 欧美一区二区精美| 麻豆91在线看| 精品av久久707| 国产精品一区二区黑丝 | 精品一区二区久久| 欧美精品一区二区蜜臀亚洲| 开心九九激情九九欧美日韩精美视频电影 | 国产精品资源在线看| 精品欧美一区二区久久| 美女视频第一区二区三区免费观看网站| 欧美另类变人与禽xxxxx| 亚洲一本大道在线| 欧美亚洲国产bt| 日韩不卡一区二区三区| 欧美一级午夜免费电影| 国产资源在线一区| 国产精品青草综合久久久久99| 97久久超碰国产精品| 一区二区三区国产精华| 欧美撒尿777hd撒尿| 日韩精品91亚洲二区在线观看| 日韩欧美国产不卡| 国产精品99久久久久久久女警| 国产欧美一区二区精品性色超碰| 99精品视频中文字幕| 亚洲国产精品一区二区久久| 91精品麻豆日日躁夜夜躁| 韩日av一区二区| 国产精品灌醉下药二区| 色就色 综合激情| 日韩高清不卡一区二区| 精品国产一区久久| www.99精品| 午夜久久久久久电影| 欧美r级电影在线观看| 粗大黑人巨茎大战欧美成人| 一区二区三区在线观看视频| 欧美精品自拍偷拍| 国产成人免费视| 亚洲永久免费av| 欧美大胆一级视频| 成人激情小说网站| 午夜视频在线观看一区二区| 欧美大片国产精品| aa级大片欧美| 日韩和欧美一区二区三区| 久久久久久久久久看片| 在线精品视频免费播放| 精品亚洲国内自在自线福利| 1区2区3区精品视频| 日韩一二三四区| 91麻豆视频网站| 久久99久国产精品黄毛片色诱| 一区免费观看视频| 欧美大片免费久久精品三p| 99精品欧美一区二区蜜桃免费| 秋霞国产午夜精品免费视频| 国产精品久久二区二区| 91精品免费观看| 色综合欧美在线视频区| 精品一区二区三区在线视频| 亚洲乱码国产乱码精品精的特点| 欧美不卡在线视频| 欧美亚洲国产bt| 成人午夜又粗又硬又大| 日韩精品免费专区| 亚洲另类在线制服丝袜| 久久久国际精品| 7777女厕盗摄久久久| 99这里都是精品| 国产精品一区一区| 日韩中文字幕91| 亚洲视频在线一区二区| 久久青草欧美一区二区三区| 欧美日韩亚洲国产综合| 91免费精品国自产拍在线不卡 | 亚洲精品在线免费播放| 欧美三级电影一区| 91亚洲精品乱码久久久久久蜜桃| 激情小说亚洲一区| 日韩精品免费专区| 亚洲综合色区另类av| 中文字幕日本乱码精品影院| 欧美videos大乳护士334| 欧美少妇xxx| 91久久国产最好的精华液| 成人av影院在线| 国产不卡免费视频| 精东粉嫩av免费一区二区三区| 日韩中文字幕亚洲一区二区va在线| 一区二区三区鲁丝不卡| 一区在线观看免费| 国产精品女同一区二区三区| 久久久久久久综合日本| 亚洲精品一线二线三线| 在线播放中文字幕一区| 欧美日韩一区二区三区不卡| 日本电影欧美片| 色88888久久久久久影院按摩| 波多野结衣的一区二区三区| 国产麻豆精品久久一二三| 国产一区二区三区在线观看精品 | 另类中文字幕网|