iolists

什麼是 iolist?

這是任何二進位制檔案。或者任何包含 0 到 255 之間整數的列表。或任何包含這兩個東西的任意巢狀列表。

來源文章

使用深度巢狀的整數和二進位制列表來表示 IO 資料,以避免在連線字串或二進位制檔案時進行復制。

即使在組合大量資料時,它們也是高效的。例如,使用二進位制語法 <<B1/binary, B2/binary>> 組合兩個 50 千位元組的二進位制檔案通常需要將兩者重新分配到新的 100kb 二進位制檔案中。使用 IO 列表 [B1, B2] 僅分配列表,在本例中為三個單詞。列表每個元素使用一個單詞和另一個單詞,有關詳細資訊,請參閱此處

使用++運算子會建立一個全新的列表,而不僅僅是一個新的兩個元素列表。當列表很長時,重新建立列表以將元素新增到末尾會變得昂貴。

在二進位制資料很小的情況下,分配 IO 列表可能比附加二進位制檔案更大。如果二進位制資料可以小或大,通常最好接受 IO 列表的一致成本。

請注意,附加二進位制檔案已按此處所述進行優化。簡而言之,二進位制檔案可以分配額外的隱藏空間。如果另一個二進位制檔案附加到適合自由空間的二進位制檔案,則將填充此檔案。這意味著並非每個二進位制附加都會導致兩個二進位制檔案的完整副本。