我需要存儲十億個「外觀」,我正在尋找最有效的方式來存儲這些內存使用情況和性能。是什麼,例如,在這些方面的差異爲a1, a2, a3
:最少的內存使用和最佳的性能
struct Appearance<'a> {
identity: &'a u64,
role: &'a str
}
struct AnotherAppearance<'a>((&'a u64, &'a str));
fn main() {
let thing = 42;
let hair_color = "hair color";
let a1 = Appearance {identity: &thing, role: &hair_color};
let a2 = AnotherAppearance((&thing, &hair_color));
let a3 = (&thing, &hair_color);
}
是否有更好的方法,這樣的結構來工作?另外,有沒有辦法獲得關於a1, a2, a3
的詳細信息,以便我可以看到它們在內存中是如何表現出來的?
很棒,我甚至可以使用u16作爲角色的查找鍵,因爲它們並不多。從理論上講,u64由「身份的守護者」擁有,我認爲引用會反映代碼中的這種行爲。我認爲,如果外觀擁有自己的u64,那麼編譯器不會抱怨如果創建了一個Keeper不知道的實例嗎?當你對一個&u64說'較慢'時,我們談論的速度有多慢? –
@LarsRönnbäck:我不知道慢了多少,但爲了查看或使用該值,您必須執行deref並查看內存中的其他位置。保持本地的東西意味着更少的高速緩存抖動。像幾乎所有與性能有關的問題,都取決於您的具體情況。 –