[英]Does Int bits in Swift(Core Data) automatically cast to the same size as the device bits?
我試圖弄清楚 Core Data 中的Int32
是否會在64 bits Device
上顯示為32 bits
或64 bits
,但我找不到關於 SO 的有效答案。
我去Swift文檔,它只顯示了這個信息:
Int 在大多數情況下,您不需要選擇特定大小的 integer 來在您的代碼中使用。 Swift 提供了一個額外的 integer 類型,Int,其大小與當前平台的原生字大小相同:
在 32 位平台上,Int 與 Int32 的大小相同。
在 64 位平台上,Int 與 Int64 的大小相同。
除非您需要使用特定大小的 integer,否則請始終在代碼中使用 Int 作為 integer 值。 這有助於代碼的一致性和互操作性。 即使在 32 位平台上,Int 也可以存儲 -2,147,483,648 和 2,147,483,647 之間的任何值,並且對於許多 integer 范圍來說足夠大。
如果我在 64 位設備的核心數據中使用Int32
而不是Int64
,有人能指出我會節省一些 memory 嗎?
如果您使用的是 SQLite 持久存儲(通常人們使用 Core Data 的方式),它不會對文件大小產生任何影響。 SQLite 使用動態類型並且不限制基於列類型的值。 SQLite 的文檔說對於整數,
該值是帶符號的 integer,存儲在 0、1、2、3、4、6 或 8 個字節中,具體取決於值的大小。
因此,無論您存儲什么 integer 值,它都會根據需要使用盡可能多的字節,並且它不知道或不關心您的代碼是否使用 32 位或 64 位或其他一些值。
在 memory 中是不同的。 一個 32 位的 integer 占用 4 個字節,一個 64 位的 int 占用 8 個字節,等等。使用足夠大的任何 integer 類型來保存您需要存儲在變量中的所有值。
但與此同時,您是否擁有如此多的數據以致於這種優化會產生任何效果? 除非您有非常大的數據集,否則使用錯誤的 integer 類型不太可能對您的應用產生影響。
CoreData中的Integer 16、32、64相當於Swift int16、int32、int64。 因此,您將節省 memory 和適當大小的磁盤空間。
資料來源:APress Media, LLC,Springer Nature 2022 A. Tsadok 的一部分,Unleash Core Data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.