Рассмотрим это демо
# R Session shows 118 MB memory usage in Activity Monitor
# Load xgboost
library(xgboost)
# Build matrix
myMatrix <- matrix(data = sample(10 * 10^8, replace = T), ncol = 10)
object.size(myMatrix) # 4000000216 bytes
# R Session shows 7.69 GB memory usage in Activity Monitor
# Build xgb.DMatrix
myDMatrix <- xgb.DMatrix(data = myMatrix)
object.size(myDMatrix) # 472 bytes
# R Session shows 15.88 GB memory usage in Activity Monitor
Здесь я
- Сделать большую матрицу
- Сделайте xgb.DMatrix из моей большой матрицы.
Из моего понимания xgb.DMatrix(data = myMatrix)
в основном создает копию myMatrix
где-то в памяти и сохраняет указатель на эту копию. Однако R имеет доступ только к указателю, поэтому моя среда R создает иллюзию малого размера xgb.DMatrix.
Я могу использовать монитор активности Mac, чтобы увидеть, что большой кусок памяти выделяется для моей R-сессии, когда я вызываю xgb.DMatrix(data = myMatrix)
.
У меня вопрос от R, как я могу проверить размер объекта, созданного xgb.DMatrix(data = myMatrix)
, то есть того, на что указывает myDMatrix
?