[轉載]PHP效率計:從引號開始(單引號、雙引號效率區別)

來源:互聯網
上載者:User

標籤: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}"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.