在《北京網站建設之C程序建设,企业網站建設》一文中分形科技为大家介绍了一下其中的三点,即1、选择合适的算法和数据结构,2、程序结构,3、使用尽量小的数据类型。因为C程序建设是一个非常庞大的体系,所以在接下来的内容中分形科技继续为大家介绍北京網站建設之C程序建设相关知识的另外三点,即4、以内存换速度的问题,5、优化数组的寻址,6、链表的优化。
大家在閱讀北京網站建設之C程序建设的相关内容时如果遇到網站建設问题、企业網站建設问题、生物網站建設问题等所有与網站建設相关的问题都可以联系我們的在线客户进行咨询。

4、關于以內存換速度的問題
在C程序建設中內存和速度一直接程序員們無法兼顧的問題,大多數情況,速度同內存(或者是性能,比如說壓縮性能什麽的)是不可兼得的。目前C程序建設行業中程序加速的常用算法就是利用查表法來避免計算,這樣原來的複雜計算用查表就可以解決了。如,在jpg有huffman碼表,在YUV到RGB變換也有變換表。
這種做法雖然浪費了內存,但是速度即有了顯著的提升。在數據庫查詢裏面也有類似的方式,如將熱點存儲起來以加速查詢。
5、優化數組的尋址
程序員在編寫程序時,常常會使用一個一維數組a[M×N]來模擬二維數組a[N][M]的問題,在訪問a[]一維數組的時寫成a[j×M+i](對于a[j][i]),這就是一維數值的尋址。雖然,這樣寫是沒有問題的,但是這樣做後每個尋址語句j×M+i都要進行一次乘法運算。
二維數值的尋址則是不同的,二維數組要比(模擬該二維數組)一維數組尋址效率高。因爲a[j][i]的尋址只是訪問了指針數組得到j行的地址,然後再+i,是沒有乘法運算的。下面從二維數組的結構來分析,二維數組的結構可以分爲兩部分:
①是一個指針數組,存儲的是每一行的起始地址,這也就是爲什麽在a[N][M]中,a[j]是一個指針而不是a[j][0]數據的原因。
②是真正的M×N的連續數據塊,這解釋了爲什麽一個二維數組可以象一維數組那樣尋址的原因。(即a[j][i]等同于(a[0])[j×M+i])
6、鏈表的優化問題
很多程序员在遇到链表问题时都会想“我們需要链表吗”的问题,虽然我們在编写一些耗时算法时采用了链表的形式,但是这样对内存的占用(似乎)少了,但是却忽略了速度。所以在这里分形科技建议:程序员在编写耗时大的代码时,尽可能不要采用链表!因为实际上采用链表并不能真正节省内存。
上文接《北京網站建設之C程序建设相关知识总结》