RFC-0004:位元組單位

MB."/>
RFC-0004:位元組單位
狀態已接受
區域
  • 管理事宜
說明

在 Fuchsia 中,特定符號用於表示位元組的倍數。這樣一來,您就不需要猜測 MB 的值,可讓程式碼更清楚。

Gerrit 變更
作者
審查人員
提交日期 (年-月-日)2020-06-09
審查日期 (年-月-日)2020-07-31

摘要

在 Fuchsia 中,特定符號用於表示位元組的倍數。這樣一來,您就不需要猜測「MB」的值,可提高資訊的清晰度。

IEC 標記法會用於位元組的倍數 (例如 RAM、磁碟、檔案大小)。

  • 在表示位元組群組時,所有 Fuchsia 開發人員說明文件和工具都會以 1024 個單位 (即 2 的冪) 呈現位元組的倍數。
  • 標籤 kibibyte、mebibyte、gibibyte 分別用於 1024、1024^2 和 1024^3。
  • 描述位元組時,請一律使用「i」符號:KiB、MiB、GiB 等。開頭和結尾的字母要大寫,中間的「i」則一律小寫。
  • 開發人員專用資料中不會使用 KB、MB、GB 等縮寫字 (不論字母大小寫)。也不會使用千位元、兆位元、千兆位元。

這些規範適用於開發人員相關的素材。本 RFC 不會提供使用者面向 (行銷/銷售) 符號的規範。

提振精神

有些人會以 2 的冪次為單位來測量位元組。因此,雖然 1 公里等於 1,000 公尺,但這些人會將 1 千位元組視為 1,024 位元組。Henkemans 另請參閱 Google 搜尋

SI 單位中,kilo-、mega-、giga- 等值是 10 的冪。

千位元組的兩種可能定義會讓開發人員感到困惑,例如:

  • 以 2 的冪為單位,65536 個位元組會寫為 64 KB
  • 以十的冪為單位,65536 位元組會寫成 65 KB (並保留一些位元組)

同樣的值可以明確寫為 64 KiB,因為 KiB 一律是 2 的冪 (1024)。

這項差異可能會導致準確度大幅偏離。錯誤率會隨著值的增加而增加

另請參閱:維基百科

設計

所有 Fuchsia 開發人員說明文件和工具都會以 1024 個單位 (即 2 的冪) 呈現位元組的倍數。

例如,65536 的大小精確為 64 KiB。

實作

我們會在發現錯誤時提交。這些錯誤應給予較高的優先順序,並在下一個版本推出前解決。

我們預期這些變更不會造成負擔,只要在出現時迅速處理即可。不過,全面檢查所有說明文件和工具可能會很麻煩。

這份文件將用於決定要使用的單位。提示:在提交的錯誤中加入此 RFC 的連結,以提供背景資訊。

成效

這項變更可能會影響其他軟體的效能。舉例來說,如果現有測試評估的總處理量為 bytes / 1000 / time,但變更為 bytes / 1024 / time,則總處理量可能會減少,但實際效能仍相同 (也就是 bytestime 未變更)。

安全性考量

如果 API 或設定接受的大小輸入值在內部乘以 1000,則如果將該值變更為 1024,可能會發生問題。(截至本文撰寫時,尚未發生這種情況)。

隱私權注意事項

不會造成任何隱私權問題。

測試

由於提出的解決方案是持續的錯誤清單,以及在發現問題時的 CL,因此測試將由個別 CL 的可測試性規定處理。

說明文件

清楚的溝通是此提案的核心。一旦發現不符合 RFC 的問題,我們就會更新說明文件。

規範

這些規範適用於開發人員相關的素材。本 RFC 不會提供使用者面向 (行銷/銷售) 符號的規範。

以縮寫形式描述位元組時,請一律使用「i」符號:KiB、MiB、GiB 等。開頭和結尾的字母要大寫,中間的「i」則一律小寫。

如要描述不含縮寫的位元組,請使用 IEC 所述的 kibibyte、mebibyte、gibibyte 等單位。不縮寫的值會根據上下文,採用美式英文或程式設計風格指南的大小寫規則。

開發人員專用資料中不會使用 KB、MB、GB 等縮寫字 (不論字母大小寫)。也不會使用千位元、兆位元、千兆位元。

缺點、替代方案和未知事項

實施這項提案的成本為何?

  • 只要宣告設計選擇並允許隨時間變更,成本就會降低 (也就是融入審查程序和一般錯誤處理程序)。

還有哪些策略可以解決同樣的問題?

  • 部分作業系統會使用 1000 或 1024 的倍數,具體取決於作業系統版本。差異可能源自合作夥伴協議,且兩者都會出現 (使用 2 次方或 10 次方)。這會發生在面向消費者的層級,而非開發人員層級。由於本 RFC 與開發人員面向的說明文件、工具和 API 等相關,因此不會使用這個替代方案。

  • 部分工具可讓您選擇以不同倍數顯示值。我們認為這會不必要地使這些工具變得複雜。

  • 繼續使用位元組的二進位冪 (不含「i」中綴)。這麼做並不合理,因為我們無法移除以十為底的位元組用法。也就是說,部分讀者仍不清楚 1 KB 有多少位元組。

既有技術與參考資料

有許多先前技術和參考資料可供使用。我們在此列出一些例子,但有興趣的讀者可以輕鬆在 Google 上查詢更多相關歷史資料,包括哪些公司做出哪些選擇,以及何時做出這些選擇。這可能只是有趣的瑣事,但不太可能與 Fuchsia 的這項提案有關。

其他參考資料:

Ubuntu

標準

有多種標準可供選擇,而本 RFC 會從眾多標準中選擇一項。

範例

  • IEC 推出 KiB、MiB、GiB...
  • JEDEC 明確將位元組單位定義為 2 進位
  • 有些製造商甚至使用混合標記法,例如 1024 * 1000 代表 1 MB。
  • 有些作業系統會使用 1000 的倍數,有些則會使用 1024
  • 有些標準會因主題是 RAM 或磁碟儲存空間而不同

這項提案並未嘗試引入其他標準或一組規則,而是建議在所有面向開發人員的文檔、工具、API 等中,使用 IEC 指南,以 1024 為倍數計算位元組。