object.size
位於 utils
包(package)。 說明
提供用於存儲的內存的估計值R對象。
用法
object.size(x)
## S3 method for class 'object_size'
format(x, units = "b", standard = "auto", digits = 1L, ...)
## S3 method for class 'object_size'
print(x, quote = FALSE, units = "b", standard = "auto",
digits = 1L, ...)
參數
x |
一個R對象。 |
quote |
邏輯,指示是否應使用引號打印結果。 |
units |
用於格式化和打印尺寸的單位。不同
對於所有標準, |
standard |
要使用的byte-size 單位標準。字符串,可能縮寫為 |
digits |
小數點後的位數,傳遞給 |
... |
要傳遞給其他方法或從其他方法傳遞的參數。 |
細節
確切地說內存分配的哪些部分應該歸屬於哪個對象不是clear-cut。此函數僅提供粗略指示:它對於原子向量應該相當準確,但不會檢測例如列表的元素是否共享。 (考慮字符向量元素之間的共享,但不考慮單個對象中字符向量之間的共享。)
計算的是對象的大小,不包括在符號表中存儲其名稱所需的空間。
相關空間(例如,函數的環境以及 EXTPTRSXP
中的指針所指向的內容)不包括在計算中。
64 位構建上的對象大小比 32 位構建上的大,但在具有相同字長和指針大小的不同平台上很可能是相同的。
使用緊湊內部表示的對象的大小可以是over-estimated。
值
類 "object_size"
的對象,具有長度為 1 的雙精度值,可歸因於該對象的內存分配的估計值(以字節為單位)。
格式化和打印對象尺寸
對象大小可以使用 byte-size 單位進行格式化R的遺留標準,IEC標準,或SI標準。如下表所示,傳統和IEC標準使用二進製單位(1024 的倍數),而 SI 標準使用十進製單位(1000 的倍數)。
對於方法 format
和 print
,參數 standard
指定要使用的標準,參數 units
指定要使用的 byte-size 單元。 units = "auto"
選擇結果為 1 或更多的最大單位(四舍五入之前)。字節大小四舍五入到 digits
小數位。如果可能,standard = "auto"
根據 units
選擇標準,否則使用舊標準。
的總結R的遺產和IEC單位:
物體大小 | legacy | IEC |
1 | 1字節 | 1乙 |
1024 | 1 KB | 1 KiB |
1024^2 | 1兆字節 | 1 MiB |
1024^3 | 1GB | 1 GiB |
1024^4 | 1 TB | 1 TiB |
1024^5 | 1 鉛 | 1 PiB |
1024^6 | 1 EiB | |
1024^7 | 1 ZiB | |
1024^8 | 1 YiB | |
的總結SI單位:
物體大小 | SI |
1 | 1乙 |
1000 | 1 KB |
1000^2 | 1MB |
1000^3 | 1GB |
1000^4 | 1TB |
1000^5 | 1PB |
1000^6 | 1 EB |
1000^7 | 1ZB |
1000^8 | 1 元 |
1000^9 | 1 RB |
1000^10 | 1 個四分衛 |
例子
object.size(letters)
object.size(ls)
format(object.size(library), units = "auto")
sl <- object.size(rep(letters, 1000))
print(sl) ## 209288 bytes
print(sl, units = "auto") ## 204.4 Kb
print(sl, units = "auto", standard = "IEC") ## 204.4 KiB
print(sl, units = "auto", standard = "SI") ## 209.3 kB
(fsl <- sapply(c("Kb", "KB", "KiB"),
function(u) format(sl, units = u)))
stopifnot(identical( ## assert that all three are the same :
unique(substr(as.vector(fsl), 1,5)),
format(round(as.vector(sl)/1024, 1))))
## find the 10 largest objects in the base package
z <- sapply(ls("package:base"), function(x)
object.size(get(x, envir = baseenv())))
if(interactive()) {
as.matrix(rev(sort(z))[1:10])
} else # (more constant over time):
names(rev(sort(z))[1:10])
作者
R Core; Henrik Bengtsson for the non-legacy standard
s.
參考
The wikipedia page, https://en.wikipedia.org/wiki/Binary_prefix, is extensive on the different standards, usages and their history.
也可以看看
Memory-limits
用於對象大小的設計限製。
相關用法
- R select.list 從列表中選擇項目
- R COMPILE 編譯用於 R 的文件
- R readRegistry 讀取 Windows 注冊表配置單元
- R browseVignettes 在 HTML 瀏覽器中列出暈影
- R hasName 檢查姓名
- R nsl 按主機名查找 IP 地址
- R edit 調用文本編輯器
- R create.post 準備電子郵件和帖子的輔助函數
- R hsearch-utils 幫助搜索實用程序
- R download.packages 從類似 CRAN 的存儲庫下載軟件包
- R DLL.version MS Windows 上的 DLL 版本信息
- R ls.str 列表對象及其結構
- R Rscript R 前端腳本
- R bug.report 發送錯誤報告
- R PkgUtils 用於構建和檢查附加包的實用程序
- R cite 引用參考書目條目
- R SweaveSyntConv 轉換 Sweave 語法
- R RSiteSearch 搜索文檔中的關鍵詞或短語
- R glob2rx 將通配符或通配符模式更改為正則表達式
- R getFromNamespace 用於開發命名空間的實用函數
- R demo R 函數演示
- R mirrorAdmin 管理存儲庫鏡像
- R citation 在出版物中引用 R 和 R 包
- R personList 人員集合(舊接口)
- R getS3method 獲取 S3 方法
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Report the Space Allocated for an Object。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。