一直以來對asp的程式編寫都比較隨意,也沒有太多考慮運作效率的問題。 asp對語法是相當寬容的,容錯性很高,它不需要定義變數便可直接使用,變數名稱不需要區分大小寫字母,asp的檔案名稱也同樣不像jsp那樣對字母大小寫是敏感的因此,在我接觸那麼多語言當中,asp是最不嚴格的一種,是對程式設計師要求最低的一種。
昨天測試了asp.net、php和asp的運行速度比較,今天又來衝動,想看看定義變數與不定義變數對asp運行效率的影響有多大,結果令人驚訝,asp程式定義變數比不定義變數速度快一倍!
測試程式還是昨天那個,運行一千萬次for循環,獲得執行時間。
1、程式沒有定義變數(dim i)
複製代碼代碼如下:
<%
dim startime
startime=timer()
for i = 1 至 10000000
next
dim endtime
endtime=timer()
response.Write 頁面執行時間: & FormatNumber((endtime-startime)*1000,3) & 毫秒
%>
2.程式定義了變數(dim i)
複製代碼代碼如下:
<%
dim i
dim startime
startime=timer()
for i = 1 至 10000000
next
dim endtime
endtime=timer()
response.Write 頁面執行時間: & FormatNumber((endtime-startime)*1000,3) & 毫秒
%>
程序各執行5次(第一次執行除外),然後取平均值。如下為測試結果:
定義變數 | 執行時間 | 平均時間 | ||||
否 | 1890ms | 1859ms | 1844ms | 1875ms | 1859ms | 1865ms |
是 | 890ms | 890ms | 984ms | 875ms | 890ms | 905ms |
從以上測試結果看出,定義變數比不定義變量,asp的執行速度快了一倍。
至於為什麼會這樣,本人也沒有更進一步深入研究了。不過透過這個實例,讓我確實感受到規範程式設計才能讓程式運作得更有效率。對於不規範的編程,語言本身雖然具有容錯性,但其分析過程是需要時間為代價的。當然了,對於一個簡單的程式來說,也許規範與不規範它們所耗時間的差別是微乎其微的,但是如果你開發的系統比較大,頁面多,函數呼叫也多,那麼規範與不規範它們所耗時的差異就會凸顯出來了,少則1、2倍,多則幾十倍都不足為奇。