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