課程
/后端開發
/PHP
/PHP7的基本變量
什么是packed array,什么是hash array,區別是什么?
2018-12-19
源自:PHP7的基本變量 5-2
正在回答
可以這么簡單的理解:
1、對于key是數字的,就不用涉及到hash運算,此時使用的是packed array; 當然如果key的值較大,或者間隔較大,還是會退化成hash array。? packed array 能夠節省索引部分占用的內存,是一個性能上的優化;
2、對于key是非數字的,必須用hash算法進行計算出來它所在bucket的位置,那么索引數組是必不可少的,只能是hash array。
這是底層的實現,對于我們寫php代碼,需要關注的點是對于業務中的大數組,有沒有可能設計一些算法,讓它滿足packed array的性質,這樣可以節省內存; 另外一方面就是要關注在大數組的情況下,可能會發聲packed array向 hash array的轉變,這個耗時還是較大的,需要盡量避免這種情況。? 當然這兩種情況都是針對“大”數組,小數組的情況下,其實差距沒那么大。
慕斯卡0281576
舉報
學習PHP7基本變量,掌握PHP7的新特性
1 回答packed array不用的兩位index 數組 為什么不能省略?
2 回答數組中的鍵為字符串2會變為hash array嗎
2 回答第6節中變成hash array之后,對于字符串‘abc’的bucket來說,‘key’和‘h’的值那個是‘2’?
1 回答什么是大小端?
1 回答十六個字節表示之后為什么不是0x00呢
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-12-19
可以這么簡單的理解:
1、對于key是數字的,就不用涉及到hash運算,此時使用的是packed array; 當然如果key的值較大,或者間隔較大,還是會退化成hash array。? packed array 能夠節省索引部分占用的內存,是一個性能上的優化;
2、對于key是非數字的,必須用hash算法進行計算出來它所在bucket的位置,那么索引數組是必不可少的,只能是hash array。
這是底層的實現,對于我們寫php代碼,需要關注的點是對于業務中的大數組,有沒有可能設計一些算法,讓它滿足packed array的性質,這樣可以節省內存; 另外一方面就是要關注在大數組的情況下,可能會發聲packed array向 hash array的轉變,這個耗時還是較大的,需要盡量避免這種情況。? 當然這兩種情況都是針對“大”數組,小數組的情況下,其實差距沒那么大。