PHP autoload與include效能比較
#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來解放程式設計師,這就仁者見仁,智者見智了。在我看來,條件允許的前提下,犧牲這一點效能(某些情況下,甚至可能是提升效能)更為便捷的開發,是值得的。
相關文章
- PHP file_get_contents 與 curl 效能比較PHP
- 效能比較
- Java JIT與AOT效能比較 - foojayJava
- PHP 5 與 PHP 7 的效能對比PHP
- PHP比較字串PHP字串
- PostgreSQL、Redis與Memcached的效能比較 - CYBERTECSQLRedis
- WCF與ASP.NET Core效能比較ASP.NET
- Caddy 與 Nginx的基準效能比較 - tjllNginx
- Apache與Nginx的優缺點、效能比較,到底選擇哪個比較好?ApacheNginx
- Python 與 PHP:2024 年程式設計前景比較PythonPHP程式設計
- php型別比較表PHP型別
- NATS訊息傳遞與REST效能比較 | VinsguruREST
- python 批量resize效能比較Python
- 請比較下for、forEach、for of的效能的效能
- Java實體對映工具MapStruct 與BeanUtils效能比較JavaStructBean
- ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較JavaImport
- ==與equals比較
- Java中List集合效能比較Java
- 排序演算法效能比較排序演算法
- Apache Pulsar 與 Kafka 效能比較:延遲性(測試方法)ApacheKafka
- MRAM與常用計算機記憶體的效能比較計算機記憶體
- Vuex與Redux比較VueRedux
- Hibernate與mybatis比較MyBatis
- yarn 與 npm 比較YarnNPM
- Vue與React比較VueReact
- RecyclerView與ListView比較View
- 堆排序和快速排序效能比較排序
- Java Bean Copy元件的效能比較JavaBean元件
- IocPerformance 常見IOC 功能、效能比較ORM
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS
- 比較Java與Node.js的併發性和效能- maxantJavaNode.js
- PHP 執行時 Composer dump-autoload 安全替代PHP
- php比較運算子的安全問題PHP
- php中 include,require,include_once,require_once 的區別PHPUI
- Goland與vscode比較 - redditGoLandVSCode
- Python與Excel VBA比較PythonExcel
- Flutter與Swift比較 - evroneFlutterSwiftVR
- volatile與Atomic的比較
- Kanban與Scrum比較 - modernanalystScrumNaN