2015-11-10 48 views
0

有沒有更好的方法來存儲uint64中的數字數據,而不是使用單個數字x,其他東西使用y數字? (總共20位數字)C#uint64 - 存儲數據?

我想存儲有關對象的信息,而沒有製作結構或類的開銷。我需要以最小的開銷儘可能快地獲得/設置。

+0

你能舉出這些數字的例子嗎? –

+2

很難理解_overhead_是什麼意思。管理這種混合動力不是一種開銷? – Steve

+0

您可以使用整數的特定位(使用[按位運算符](https://en.wikipedia.org/wiki/Bitwise_operation))來存儲信息,但在大多數情況下,我已經看到,它們大多是微優化,不值得去做。你能舉一個你將要存儲的例子嗎? –

回答

3

所以,據我所知,體素編碼。如果要存儲逐個定義的「塊」數據,則可以使用區間樹,其中每個節點的關鍵字是運行的開始,值是運行的座標。 Implemntation example

而且,你從來沒有單獨的塊存儲爲類,但例如塊3×3塊的SET可以做到:

enter image description here

,你看,我只是編碼的兩位 的9塊數據位置這是簡化的方法,其中數據大小不是問題,但快速實現迭代需要形成一些算法。

之前,你甚至有體素開始播放閱讀這些

Let's Make a Voxel Engine

Damn, Voxel Data is BIG

Voxel engines are everywhere…

Voxel Engine – Data Storage

互聯網是充滿answeres的,但這些都會給你的信息你需要。還關鍵字,我認爲你是mising是VOXEL

+0

感謝您的鏈接!我不完全理解樹的事情,但鏈接幫助。 –

1

如果使用uint64ulong沒有固定的要求,我建議你使用BigInteger class。它旨在有效存儲任意大的數字。

效率高嗎?如果您反編譯代碼,您會發現它們在內部存儲一些位以管理編號。也就是說,在N位中,它存儲的編號最多爲2^N - 1