C: yürütme süresini ölçmek için mikro kıyaslama paketi nasıl kullanılır?
Farklı ifadelerin yürütme sürelerini karşılaştırmak için R’deki microbenchmark paketini kullanabilirsiniz.
Bunu yapmak için aşağıdaki sözdizimini kullanabilirsiniz:
library (microbenchmark) #compare execution time of two different expressions microbenchmark( expression1, expression2) )
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: R’de microbenchmark() işlevini kullanma
R’de çeşitli basketbol takımlarındaki oyuncuların attığı puanlar hakkında bilgi içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
#make this example reproducible
set. seed ( 1 )
#create data frame
df <- data. frame (team=rep(c(' A ', ' B '), each= 500 ),
points=rnorm( 1000 , mean= 20 ))
#view data frame
head(df)
team points
1 A 19.37355
2 A 20.18364
3 A 19.16437
4 A 21.59528
5 A 20.32951
6 A 19.17953
Şimdi her takımdaki oyuncuların attığı ortalama puanları iki farklı yöntem kullanarak hesaplamak istediğimizi varsayalım:
- Yöntem 1 : R Tabanından Aggregate() işlevini kullanın
- Yöntem 2 : dplyr’den group_by() ve summarise_at() işlevini kullanın
Bu ifadelerin her birinin yürütülmesi için gereken süreyi ölçmek için microbenchmark() işlevini kullanabiliriz:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) Unit: milliseconds express aggregate(df$points, list(df$team), FUN = mean) df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) min lq mean median uq max neval cld 1.307908 1.524078 1.852167 1.743568 2.093813 4.67408 100 a 6.788584 7.810932 9.946286 8.914692 10.239904 56.20928 100 b
microbenchmark() işlevi her ifadeyi 100 kez çalıştırır ve aşağıdaki ölçümleri ölçer:
- min : Yürütme için gereken minimum süre
- lq : tamamlamak için gereken sürenin alt çeyreği (25. yüzdelik dilim)
- Ortalama : Yürütme için gereken ortalama süre
- medyan : Medyan yürütme süresi
- uq : yürütmek için gereken sürenin üst çeyreği (75. yüzdelik dilim)
- max : Yürütme için gereken maksimum süre
- neval : Her ifadenin değerlendirilme sayısı
Genellikle her ifadeyi yürütmek için yalnızca ortalama veya medyan süreye bakarız.
Sonuçtan şunu görebiliriz:
- R tabanlı yöntemi kullanarak takım puan ortalamasını hesaplamak ortalama 1.852 milisaniye sürdü.
- Dplyr yöntemini kullanarak takım başına ortalama puanın hesaplanması ortalama 9.946 milisaniye sürdü.
Bu sonuçlara dayanarak temel R yönteminin önemli ölçüde daha hızlı olduğu sonucuna vardık.
Her ifadeyi yürütmek için gereken sürelerin dağılımını görselleştirmek için boxplot() işlevini de kullanabiliriz:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team results <- microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) #create boxplot to visualize results boxplot(results, names=c(' Base R ', ' dplyr '))
Kutu grafiklerinden dplyr yönteminin takım başına ortalama puan değerini hesaplamasının ortalama olarak daha uzun sürdüğünü görebiliriz.
Not : Bu örnekte iki farklı ifadenin yürütme sürelerini karşılaştırmak için microbenchmark() fonksiyonunu kullandık ancak pratikte istediğiniz kadar ifadeyi karşılaştırabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de ortam nasıl temizlenir
RStudio’daki tüm grafikler nasıl temizlenir?
R’ye birden fazla paket nasıl yüklenir