2013-06-20 53 views
2

大家都知道PHP中的函數調用會嚴重影響性能。這個腳本證明了這個問題:PHP優化器減少函數調用

// Plain variable assignment. 
    $time = microtime(true); 
    $i = 100000; 
    while ($i--) 
    { 
     $x = 'a'; 
    } 
    echo microtime(true) - $time."\n\n"; 
// 0.017973899841309 

    $time = microtime(true); 
    function f() { $a = "a"; return $a; } 
    $i = 100000; 
    while ($i--) 
    { 
     $x = f(); 
    } 
    echo microtime(true) - $time."\n\n"; 
//0.18558096885681 

順便提一下,匿名函數是最糟糕的。你的速度慢了10倍。

是否有PHP腳本優化器,可以減少函數調用的數量並縮小腳本?

還有這個帖子:Why are PHP function calls *so* expensive?與本文相關的

+1

您的比較有點不公平,因爲您的函數調用大大多於添加函數調用。函數體應該是$ x ='a';返回;函數調用應該只是f();並且您的microtime開始調用應該在函數聲明之後發生,而不是之前。但是同意,函數調用時PHP很慢。事實上,由於它的實現,它在很多方面都很慢。爲什麼選擇函數調用? –

+0

我測試了啓用APC的確切代碼,使用函數調用的速度只有2.5倍左右。 – Pitchinnate

+0

所有你說的都叫做**過早優化** – Yang

回答

0

你才真正叫,你需要在任何給定時間的函數,因此也沒有。

,你可以做些什麼來優化你的代碼的事情是利用作爲最小的匿名功能,減少的空間量(例如使用PHP minifier)和重命名功能,1個字母的名字,

這將ATLEAST記號化的腳本,這將允許更快的閱讀功能。 但是就最優化而言,由於可讀性完全消失,你最好不要這樣做。