我有一個非常小的對象的巨大集合。爲了確保數據存儲非常緊湊,我重寫了類,以便將所有信息以可變字節編碼存儲在字節數組中。這些數百萬個對象的大多數實例只需要3到7個字節來存儲所有數據。C中有效的小字節數組#
內存分析後,我發現這些字節數組總是至少需要32字節。
有沒有一種方法可以將信息存儲得比字節[]更緊湊?指向非託管陣列會更好嗎?
class MyClass
{
byte[] compressed;
public MyClass(IEnumerable<int> data)
{
compressed = compress(data);
}
private byte[] compress(IEnumerable<int> data)
{
// ...
}
private IEnumerable<int> decompress(byte[] compressedData)
{
// ...
}
public IEnumerable<int> Data { get { return decompress(compressed); } }
}
我添加了代碼。我必須存儲一些非常小的整數 - 因此可變字節編碼。 – user2033412
這似乎是一個「問題」,與您在創建數組之前創建數組的方式有關。你能提供壓縮方法的源代碼嗎? –
問題的一部分是對象開銷,在64位版本中更糟糕。這有一些關於這方面的信息:[內存和字符串](https://blogs.msmvps.com/jonskeet/2011/04/05/of-memory-and-strings/) – hatchet