在《北京網(wǎng)站建設(shè)之C程序建設(shè),企業(yè)網(wǎng)站建設(shè)》一文中分形科技為大家介紹了一下其中的三點(diǎn),即1、選擇合適的算法和數(shù)據(jù)結(jié)構(gòu),2、程序結(jié)構(gòu),3、使用盡量小的數(shù)據(jù)類型。因?yàn)镃程序建設(shè)是一個(gè)非常龐大的體系,所以在接下來的內(nèi)容中分形科技繼續(xù)為大家介紹北京網(wǎng)站建設(shè)之C程序建設(shè)相關(guān)知識(shí)的另外三點(diǎn),即4、以內(nèi)存換速度的問題,5、優(yōu)化數(shù)組的尋址,6、鏈表的優(yōu)化。
大家在閱讀北京網(wǎng)站建設(shè)之C程序建設(shè)的相關(guān)內(nèi)容時(shí)如果遇到網(wǎng)站建設(shè)問題、企業(yè)網(wǎng)站建設(shè)問題、生物網(wǎng)站建設(shè)問題等所有與網(wǎng)站建設(shè)相關(guān)的問題都可以聯(lián)系我們的在線客戶進(jìn)行咨詢。

4、關(guān)于以內(nèi)存換速度的問題
在C程序建設(shè)中內(nèi)存和速度一直接程序員們無法兼顧的問題,大多數(shù)情況,速度同內(nèi)存(或者是性能,比如說壓縮性能什么的)是不可兼得的。目前C程序建設(shè)行業(yè)中程序加速的常用算法就是利用查表法來避免計(jì)算,這樣原來的復(fù)雜計(jì)算用查表就可以解決了。如,在jpg有huffman碼表,在YUV到RGB變換也有變換表。
這種做法雖然浪費(fèi)了內(nèi)存,但是速度即有了顯著的提升。在數(shù)據(jù)庫查詢里面也有類似的方式,如將熱點(diǎn)存儲(chǔ)起來以加速查詢。
5、優(yōu)化數(shù)組的尋址
程序員在編寫程序時(shí),常常會(huì)使用一個(gè)一維數(shù)組a[M×N]來模擬二維數(shù)組a[N][M]的問題,在訪問a[]一維數(shù)組的時(shí)寫成a[j×M+i](對(duì)于a[j][i]),這就是一維數(shù)值的尋址。雖然,這樣寫是沒有問題的,但是這樣做后每個(gè)尋址語句j×M+i都要進(jìn)行一次乘法運(yùn)算。
二維數(shù)值的尋址則是不同的,二維數(shù)組要比(模擬該二維數(shù)組)一維數(shù)組尋址效率高。因?yàn)閍[j][i]的尋址只是訪問了指針數(shù)組得到j(luò)行的地址,然后再+i,是沒有乘法運(yùn)算的。下面從二維數(shù)組的結(jié)構(gòu)來分析,二維數(shù)組的結(jié)構(gòu)可以分為兩部分:
?、偈且粋€(gè)指針數(shù)組,存儲(chǔ)的是每一行的起始地址,這也就是為什么在a[N][M]中,a[j]是一個(gè)指針而不是a[j][0]數(shù)據(jù)的原因。
②是真正的M×N的連續(xù)數(shù)據(jù)塊,這解釋了為什么一個(gè)二維數(shù)組可以象一維數(shù)組那樣尋址的原因。(即a[j][i]等同于(a[0])[j×M+i])
6、鏈表的優(yōu)化問題
很多程序員在遇到鏈表問題時(shí)都會(huì)想“我們需要鏈表嗎”的問題,雖然我們?cè)诰帉懸恍┖臅r(shí)算法時(shí)采用了鏈表的形式,但是這樣對(duì)內(nèi)存的占用(似乎)少了,但是卻忽略了速度。所以在這里分形科技建議:程序員在編寫耗時(shí)大的代碼時(shí),盡可能不要采用鏈表!因?yàn)閷?shí)際上采用鏈表并不能真正節(jié)省內(nèi)存。
上文接《北京網(wǎng)站建設(shè)之C程序建設(shè)相關(guān)知識(shí)總結(jié)》