摘要:一直以為的數組更節省內存,從來沒有測試過,今天因為要讀取一個大配置文件作為。做了一次測試得出結論是使用對象保存數據更好,花費的內存是數組的。
一直以為php的數組更節省內存,從來沒有測試過,今天因為要讀取一個大配置文件作為pool。做了一次測試;
得出結論是 使用對象保存數據更好,花費的內存是數組array的1/4。
測試代碼
class obj { public $name; public $id; public function __construct($id,$name) { $this->name = $name; $this->id = $id; } } $max = 10000; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $arrayList[] = [$i,$max]; } $new = memory_get_usage(); echo "{$max}個數組(默認key)內存消耗".($new-$old)." "; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $arrayList[] = ["id"=>$i,"name"=>$max]; } $new = memory_get_usage(); echo "{$max}個數組(和對象可以互相轉換的)內存消耗".($new-$old)." "; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $objectList[] = new obj($i,$max); } $new = memory_get_usage(); echo "{$max}個對象內存消耗".($new-$old)." ";
結果
10000個數組(默認key)內存消耗 4288440 10000個數組(和對象可以互相轉換的)內存消耗 4284288 10000個對象內存消耗 1451320
大概比例
array:object = 4:1
越是復雜的數組,用過同等對象保存,內存小更多
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29254.html
摘要:刪除不必要的代碼。而簡化前的代碼包含的語法要素對于傳達代碼意義本身作用并不大。刪除不必要的代碼有時候,我們試圖為不必要的事物命名。例如,大多數情況下,你應該省略僅僅用來當做返回值的變量。你的函數名應該已經說明了關于函數返回值的信息。 原文地址 本文已在前端早讀課公眾號首發:【第952期】JavaScript代碼風格要素 譯者:墨白 校對:野草 1920年,由威廉·斯特倫克(Will...
摘要:數據檢索有兩種主要形態。所以,回歸本質,影響數據檢索效率的就那么幾個因素。數據檢索干的是什么事情定位加載變換找到所需要的數據,把數據從遠程或者磁盤加載到內存中。減少的數據量的兩個手段,聚合和抽樣。 數據檢索有兩種主要形態。第一種是純數據庫型的。典型的結構是一個關系型數據,比如 mysql。用戶通過 SQL 表達出所需要的數據,mysql 把 SQL 翻譯成物理的數據檢索動作返回結果。第...
摘要:內置函數的性能優劣。產生額外開銷的錯誤抑制符號,最好別用不管是性能優化和項目的健壯性等方面。在方法中遞增局部變量,速度是最快的。類似的方法調用所花費的時間接近于次的局部變量遞增操作。 什么情況之下,會遇到PHP性能問題?1:PHP語法使用不恰當。2:使用PHP語言做了它不擅長的事情。3:使用PHP語言連接的服務不給力。4:PHP自身的短板(PHP自身做不了的事情)。5:我們也不知道的問...
摘要:大型網站建議用自代的集群功能從個人過往的使用情況來看,的負載能力比高很多。最新的服務器也改用了。你對的需求決定你的選擇。在模式下,如果處理慢或者前端壓力很大的情況下,很容易出現進程數飆升,從而拒絕服務的現象。 1、nginx相對于apache的優點: 輕量級,同樣起web 服務,比apache占用更少的內存及資源 抗并發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的...
閱讀 713·2023-04-25 19:43
閱讀 3910·2021-11-30 14:52
閱讀 3785·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3869·2021-11-29 11:00
閱讀 3558·2021-11-29 11:00
閱讀 6105·2021-11-29 11:00