Bir programlama çalışmasında algoritmanın oluşturulma yöntemi, çalışmanın performansını etkileyen faktörler arasında sayılabilir. Belirli bir işleve sahip bir program birden fazla farklı yöntemlerle yazılabilir. Bize düşen en yüksek performanslı olan kodu yazabilmektir..
Bu yazıda iki farklı yöntemle Fibonacci serisini kodlayacak ve bu yöntemler arasındaki performans farkını inceleyeceğiz. İncelemeyi ise microbenchmark paketi aracılığı ile yapacağız.
fibonacci_rec <- function(n) {
if(n <= 1) {
return(n)
} else {
return(fibonacci_rec (n-1) + fibonacci_rec(n-2))
}
}
Burada recursive bir kod ile Fibonacci serisini yazdık. Fonksiyon kendisini n-1 ve n-2 değerleri için çağırıyor ve sonuçları toplayarak bize dönüyor. Şimdi gelin bu yöntemle Fibonacci serisindeki 20. sayıyı bulmak için ne kadar zaman gerekiyor hesaplayalım.
# install.packages("microbenchmark")
library(microbenchmark)
microbenchmark(fibonacci_rec(20), unit="ms")
# Unit: milliseconds
# expr min lq mean median uq max neval
# fibonacci_rec(20) 5.4937 5.86875 6.724587 6.1197 7.1821 10.7857 100
İşlem yaklaşık 7 milisaniye sürdü. Şimdi gelin bunu farklı bir yöntemle yazalım ve bu yöntemde performansı artırmak için bulduğumuz sayıları kaydedelim. Böylece fonksiyonumuz bir kere bulduğu sayıyı bir kez daha bulmak zorunda kalmasın.
fibonacci_seq <- function(n) {
if (n <= 1) {
return(n)
}
fib <- rep.int(NA_real_, n + 1)
fib[1] <- 0
fib[2] <- 1
for (i in 2:n) {
fib[i + 1] <- fib[i] + fib[i - 1]
}
return(fib[n + 1])
}
microbenchmark(fibonacci_seq(20), unit="ms")
# Unit: milliseconds
# expr min lq mean median uq max neval
# fibonacci_seq(20) 0.002 0.0022 0.085159 0.0023 0.0024 8.2883 100
Daha verimli bir yöntemle yazdığımız Fibonacci serisi algoritması ise yaklaşık 0.08 milisaniye sürdü. Bu basit çalışmada bile algoritma tasarımının R'da yüksek performanslı programlama için ne denli kritik olduğu net bir biçimde görülebiliyor. Bir de çok daha geniş ölçekli çalışmalarda algoritma seçiminin yaratacağı farkı hayal edin!
Veri bilimi hakkında daha geniş ve kapsamlı bilgiye erişmek, kariyerinizde fark yaratacak adımlar atmak isterseniz Miuul'un sunduğu Data Scientist Path eğitimine göz atabilirsiniz.