試述優化程序的一些小技巧
發表時間:2023-08-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]記得以前在學校里面念數據結構的時候,印象里有一個概念是程序的運算次數。在我的理解中,完成一定的事情運算次數越少則說明這個程序越優,因而我們當時就要學習各種各樣的遍歷搜索,好多的排序方法,散列等等的事...
記得以前在學校里面念數據結構的時候,印象里有一個概念是程序的運算次數。在我的理解中,完成一定的事情運算次數越少則說明這個程序越優,因而我們當時就要學習各種各樣的遍歷搜索,好多的排序方法,散列等等的事情(好痛苦的記憶啊)。當時我就很困惑,這跟我們編寫一般的程序到底有什么關系呢!呵呵,當時我最喜歡的是數組、窮舉法,反正都是讓計算機干活,要不然干嘛用計算機,自已拿張紙來排序啟不是更快呢。
隨著科技時代的高速發展,計算機的速度也在以驚人的速度提高。我當年光茫四射的PENTIUM 166 MMX 好像還是昨天的事;可是技術上速度上的提升并沒有給我們效率上的提高,除了界面越來越花俏,功能越來越無用以外,WORD還是做著排版打印的事,超級解霸還是用來看著VCD,我們并沒有從技術的發展中嘗到一絲的甜頭,換來的只有更新換代不斷投入的金錢和勞力!
說得太遠了,言歸正傳!剛剛從學校畢業的時候,我接到了第一個項目是編寫一家企業的進銷存軟件;我當時剛剛學了DELPHI,對自已的功力也很自負(每一個大學畢業生都有這樣子過),于是就這樣花了三個多月的時間把這個軟件完成了。可是當我拿著軟件到客戶那里去調試時出現了一個很奇怪的現象,雙擊程序的圖標后,桌面一點的反應也沒有,即沒有出現主窗口,也沒有報錯的信息。難道我部署程序出問題了嗎,我把整個DELPHI在客戶的機器上裝了一遍,再次運行還是一樣。我坐下來,準備在客戶端把項目打開來查一查錯誤,這時,過了許久的程序終于出現了,我似乎也明白了我的錯誤在什么地方了。
原因是出在我的程序的主窗口放置了許多的COMBOBOX控件,這些下拉框項目的內容是從數據庫中讀取的然后安裝到控件中的,目的是讓客戶作出一定的選擇然后提交到數據庫中。然而我錯就錯在我在初始化窗口的事件中,就連接到數據庫去逐一的讀取每個表的內容,然后將內容過濾(因為可能有重復的內容)、排序,然后再ADD給每一個COMBOBOX,這要花費相當一段的時間,這也是造成了我點擊程序后沒有反應的現象。如果我把讀取列表放在用戶第一次點擊控件的事件中,把過慮和排序放在數據庫端做,這樣的現象也就不會出現。現在有很多軟件現在都有一個LOGO畫面,它的目的既是展示公司的形象,我認為還有另一個重要的目的是在主窗口未出現之前,在后臺初始化所有的數據和連接的時候,讓用戶了解程序已經在運行中了。
我是一個很菜的CODER,不敢高談闊論,只能就程序的優化總結一下我的一些經驗:
1、現在有很多人喜歡很隨意的使用控件的事件,在事件里面直接編寫包含大量代碼的方法。這有兩個缺點,一是程序的可讀性極差,第二是你無法確定事件發生的先后次序,代碼的執行有可能不能同步。所以我的觀點是,盡可能把完成一件任務的事件寫成一個獨立的方法或一個獨立的類,而如果要在事件中發生的話就調用這個方法或實例化這個類,然后執行方法。
2、用三項表達式來代替IF。。THEN,用正則表達式來實現數據的查找和過濾。
3、對數據庫的連接是一種脫機操作,所以要盡量做到用事務來處理,不要一會會的連接斷開。
4、使用多線程和串行開發。(這個我也不懂,我最近正在學,看的書是清華大學出版社出的《C# 線程參考手冊》)