Referanslar vs. Kopyalar

R'de Ölçeklenebilir Veri İşleme

Simon Urbanek

Member of R-Core, Lead Inventive Scientist, AT&T Labs Research

Büyük matrisler ve matrisler - Benzerlikler

  • Alt küme
  • Ata
R'de Ölçeklenebilir Veri İşleme

Büyük matrisler ve matrisler - Farklar

  • big.matrix diskte saklanır
  • R oturumları arasında kalıcıdır
  • R oturumları arasında paylaşılabilir
R'de Ölçeklenebilir Veri İşleme

R genelde atama sırasında kopya oluşturur

Bu, a'nın bir kopyasını oluşturur ve b'ye atar.

a <- 42
b <- a
a
42
b
42
a <- 43
a
43
b
42
R'de Ölçeklenebilir Veri İşleme

R genelde atama sırasında kopya oluşturur

a <- 42

foo <- function(a){a <- 43 paste("Fonksiyon içinde a", a)}
foo(a)
"Fonksiyon içinde a 43"
paste("Fonksiyon dışında a hâlâ", a)
"Fonksiyon dışında a hâlâ 42"
R'de Ölçeklenebilir Veri İşleme

Tüm R nesneleri kopyalanmaz

Bu fonksiyon, global ortamda a'nın değerini değiştirir

foo <- function(a) {a$val <- 43 
                    paste("Fonksiyon içinde a", a$val)}
a <- environment()
a$val <- 42
foo(a)
"Fonksiyon içinde a 43"
paste("Fonksiyon dışında a$val", a$val)
"Fonksiyon dışında a$val 43"
R'de Ölçeklenebilir Veri İşleme

deepcopy()

# x büyük bir matristir
x <- big.matrix(...)

# x_no_copy ve x aynı nesneyi işaret eder
x_no_copy <- x

# x_copy ve x farklı nesneleri işaret eder
x_copy <- deepcopy(x)

R'de Ölçeklenebilir Veri İşleme

Referans davranışı

R örtük olarak kopya oluşturmaz

  • Bellek kullanımını en aza indir
  • Çalışma süresini azalt
R'de Ölçeklenebilir Veri İşleme

Tüm R nesneleri kopyalanmaz

library(bigmemory)

x <- big.matrix(nrow = 1, ncol = 3, type = "double", 
                init = 0, 
                backingfile = "hello-bigmemory.bin", 
                descriptorfile = "hello-bigmemory.desc")
R'de Ölçeklenebilir Veri İşleme

Tüm R nesneleri kopyalanmaz

x_no_copy <- x
x[,]
0 0 0
x_no_copy[,]
0 0 0
x[,] <- 1
x[,]
1 1 1
x_no_copy[,]
1 1 1
R'de Ölçeklenebilir Veri İşleme

Tüm R nesneleri kopyalanmaz

x_copy <- deepcopy(x)
x[,]
1 1 1
x_copy[,]
1 1 1
x[,] <- 2
x[,]
2 2 2
x_copy[,]
1 1 1
R'de Ölçeklenebilir Veri İşleme

Hadi pratik yapalım!

R'de Ölçeklenebilir Veri İşleme

Preparing Video For Download...