標籤:blog http com 使用 檔案 資料
原文地址:http://blog.sina.com.cn/s/blog_640b03390100sham.html
一直以來,程式的執行效率就是人們所關注的,在PHP中也不例外,從最簡單的引號,也在思考他的效率。
我們特別做了實驗,我們自稱這個實驗可能前無古人,後無來者。
我們的實驗是藉助最初級的實驗方法:累積法和多次實驗求平均值。
實驗一:在普通情況下的效率
我們的實驗是5000次執行10000個位元組的檔案,獲得解析過程中的速度。
首先,本實驗特別規定一個單位,這是為了更好地表示以及排除電腦本身效率的差異。
時間單位 TT,表示約 7.2×10[sup]-8[/sup]s 。
我們獲得四組實驗資料,可理解為表示 ‘a‘ 比 "a" 快的時間:
0.29 TT,大概0.0000000206s
0.46 TT,大概0.0000000328s
0.38 TT,大概0.0000000275s
0.41 TT,大概0.0000000292s
平均值:0.39 TT (‘aaaa....(139個)‘ 的效率接近於 "aaa...(100個)" )
結論:在資料量相同,並且在普通情況下(不藉助轉義),使用單引號速度更快。
實驗二:單引號轉義的效率
我們的實驗是5000次分別以「單引號、雙引號」執行兩份資料相同,但其中一份特別用‘表示單引號。
時間單位 TT,表示約 7.2×10[sup]-8[/sup]s 。
我們獲得四組實驗資料,可理解為表示 " ‘ " 比 ‘ ‘ ‘ 快的時間:
0.19 TT,大概0.0000000138s
0.15 TT,大概0.0000000110s
0.23 TT,大概0.0000000162s
0.24 TT,大概0.0000000173s
平均值:0.2 TT (” ‘‘‘‘...(12個) " 的效率接近於 ‘ ‘‘...(10個)" )
結論:如果字串中需要表示單引號(MySQL查詢),應儘可能避免轉義,所以應使用雙引號。
實驗三:花括弧的效率
我們的實驗是1000次執行含有數量一定的變數標記的檔案,獲得解析過程中的速度。
時間單位 TT,表示約 1.581×10[sup]-7[/sup]s~1.666×10[sup]-7[/sup]s 。(TT 變化)
得到三組資料,表示 "{$abc}" 比 "$abc" 快。
15.3 TT,大概0.0000024186s
14.5 TT,大概0.0000024093s
15.3 TT,大概0.0000024152s
這資料是十分驚人的,平均結果 15 TT。
這意味著:使用花括弧的解析速度,大約是不使用花括弧的16倍。
結論:在雙引號中表示變數,儘可能使用花括弧。
實驗四:連續與非連續的效率
我們的實驗是1000次執行含有數量一定的變數標記的檔案,獲得解析過程中的速度。
時間單位 TT,表示約 1.581×10[sup]-7[/sup]s~1.666×10[sup]-7[/sup]s 。(TT 變化)
第一組實驗資料,表示 "{$abc}{$abc}{$abc}..." 比 $abc.$abc.$abc 平均每個變數解析快
22.45 TT,大概0.0000035498s
21.03 TT,大概0.0000035037s
22.12 TT,大概0.0000034930s
花括弧(連續)比單引號(非連續)快的時間,平均結果 22 TT。
這意味著:使用花括弧的解析速度,大約是使用不連續的單引號的23倍。
結論:在單引號中表示多個變數(或資料總量少),儘可能換用雙引用,並使用花括弧。
第二組實驗資料,表示 "...$abc$abc$abc..." 比 ‘...’.$abc.$abc.$abc.‘...‘ 平均每個變數解析快
7.15 TT,大概0.0000011311s
6.57 TT,大概0.0000010943s
6.83 TT,大概0.0000010777s
雙引號(連續)比單引號(非連續)快的時間,平均結果 7 TT。(該資料變化)
這意味著:變數多時,使用雙引號(不使用花括弧)的解析速度,大約是使用不連續的單引號的8倍。
結論:在雙引號中表示多個變數(或資料總量少),比使用單引號而需要用「串連運算子」要快。
結論:表示多個變數時(或資料總量少),應可能範圍內使用雙引號,並使用花括弧。
(附:作者推測,這可能和記憶體空間的分配有關係,連續符可能會使記憶體不斷調整)
最終結論:
首先,表示簡單的資料時(不需要轉義),盡量用單引號。
‘Cal: Are you good at long jump?‘
但如果因為使用單引號,而需要進行轉義(即包含單引號),考慮使用雙引號。
‘Cal: Yes. But, you know, it‘s written.‘ => "Cal: Yes. But, you know, it‘s written."
如果需要表示變數,應盡量使用花括弧。
"Cal: $to" => "Cal: {$to}, you shouldn‘t go shopping."
盡量使其連續:
‘Cal: ‘.$calsaid => "Cal: $calsaid" => "Cal: {$calsaid}"