PHP autoload與include效能比較

shupan001發表於2011-10-09
#file:SimpleClass.php
class SimpleClass {
        public function __construct() {
                echo get_time() . "\r\n";
        }
}
#file:php_include.php
for($i  = 0;$i < $loop;$i++) {
        include_once "SimpleClass.php";
        new SimpleClass();
}

當$loop值為1時,指令碼耗時約0.00018906593322754秒,當$loop為1000時,指令碼耗時約0.076701879501343秒。

如果我們用autoload實現呢?

#file:php_autoload.php
function __autoload($class_name) {
        include_once $class_name . '.php';
}
 
for($i  = 0;$i < $loop;$i++) {
        new SimpleClass();
}

在這段程式碼中,我定義了__autoload函式,幾乎一樣的指令碼,當$loop為1時,耗時0.0002131462097168秒,而當$loop為1000時,耗時僅為前面程式碼的1/7,0.012391805648804秒。

但請注意看SimpleClass的程式碼,其中輸出了一行字串,如果去掉這行輸出後再比較,會是什麼樣的結果呢?

在$loop同為1000的情況下,前者耗時0.057836055755615秒,而使用了autoload後,僅僅0.00199294090271秒!效率相差近30倍!

從上面的測試可以看出,當檔案僅僅被include一次,autoload會消耗稍微多一點的時間,但如果在檔案被反覆include的情況下,使用autoload則能大大提高系統效能。

至於是否要使用autoload來解放程式設計師,這就仁者見仁,智者見智了。在我看來,條件允許的前提下,犧牲這一點效能(某些情況下,甚至可能是提升效能)更為便捷的開發,是值得的。


相關文章