Miuul Araştırma

R ile Yüksek Performanslı Programlama - I

R’da yüksek performanslı kodlara neden ihtiyaç duyarızı ve bu kodları nasıl yazarızı konuşuyoruz.

Bu yazı ile beraber yepyeni bir seriye başlıyoruz. Bu seriyi bitirdiğimizde R’ı daha verimli bir şekilde kullanmayı ve büyük verinin getirdiği performans sorunlarını aşmayı öğrenmiş olacağız! Biraz daha detaylı anlatmak gerekirse R’da yüksek performanslı kodlara neden ihtiyaç duyarızı ve bu kodları nasıl yazarızı konuşacağız. R’ın neden büyük verilerde yapılan işlemlerde yavaş kaldığını anlayacak ve sonrasında bu yavaşlığı gidermenin yöntemlerini öğreneceğiz. Bu serideki örneklerin ve anlatımların bir bölümü benim de öğrenme sürecinde kullandığım Lim ve Tjhi’nin ‘R High Performance Programming’ kitabından alınmıştır.

İlk olarak R’ın nasıl bir programlama dili olduğunu öğrenelim. Örneğin Java ile R arasında nasıl bir fark vardır? Java’da çok hızlı bir şekilde çalışan For Döngüsü R’da neden yavaştır ve tercih edilmemelidir?

yorumlayıcı bir dildir. Bir diğer programlama dili tipi ise derleyici programlama dili tipidir. Peki yorumlayıcı olması ne anlama gelmektedir? Yorumlayıcı diller bizim çalıştırdığımız kodu farklı bir programlama diline çevirir, sonrasında derlenen bu kodlar çalışır. Her satırı çalıştırdığımızda bu yorumlama işlemi yapılır. Bunun bir avantajı her satır sonunda bir sonuç elde edebilmemiz, dezavantajı ise bu yorumlama işleminin bize bir yavaşlık olarak dönmesidir. Java dili derleyici bir dildir, bu nedenle yorumlama gibi bir işlem olmaksızın kodlarımız anında çalışır. Bu da onu çok daha hızlı yapar. Bu çalışma ‘execution time’ süresinde olmaktadır.

Yani bir R programını her çalıştırdığımızda 2 ayrı işlem yapılır. Önce kodlarımız yorumlanır, sonrasında çalıştırılır. Bu da onu yavaşlatır.

R dilinin yavaş kalmasının bir diğer sebebi de tek çekirdek ile çalışmasıdır. Biz aksi yönde bir aksiyon almadıkça bilgisayarımız kaç çekirdekli olursa olsun R otomatik olarak tek çekirdek ile çalışacaktır. Bu da bize bir performans düşüklüğü olarak dönmektedir. Burada bizim yapmamız gereken performans arttırıcı çözümler bulmaktır.

R dilinin bu sıkıntılarını aşmak için bir çok çözüm vardır. Biz de yazılarımızda bunları konuşacak ve çok daha hızlı çalışan programlar yazmayı öğreneceğiz. Fakat bunlardan önce R üzerinde yarattığımız değişkenlerin nerede tutulduğunu ve bunun etkilerini incelememiz gerekiyor.
 

R Üzerindeki Verilerimiz RAM’de Tutulur

R üzerinde çalıştığımız tüm veriler RAM’de tutulur. Yani veriyi yüklediğimiz an CPU tarafından anında işlenilebilir haldedir. Bu da performans için harika bir durumdur. Fakat bunun bir de dezavantajı bulunuyor. O da işleyebileceğimiz verinin maksimum büyüklüğünü RAM miktarı ile kısıtlamasıdır. Ve sistemimizde bulunan RAM’in tamamı da R’a ayrılmamıştır. Arkaplanda çalışan diğer işlemler de RAM kullanmaktadır. Diyelim ki 8 GB RAM’imiz bulunuyor. Bunun 6 GB’ı da R’a ayrılmış olursun. Bu demek oluyor ki işleyebileceğimiz verinin büyüklüğü 6 GB ile sınırlıdır. Diyelim ki kullanabileceğimiz tüm alanı kullandık. Sonrasında yapacağımız en ufak bir işlemde alacağımız hata aşağıdaki gibidir:
 

Error: cannot allocate a vector of size 800.1 Mb

Peki bu durum karşısında çaresiz miyiz? Hayır! RAM kullanımını optimize edecek çözümlerimiz de mevcut. Bunları da ilerleyen derslerde göreceğiz. Sıradaki yazı itibariyle uygulamalı yöntemlere başlıyoruz.

SQL ile T.C. Sağlık Bakanlığı Web Sayfasındaki Covid-19 Aşılama Verilerinin 3 Aylık Analizi

Ömer Çolakoğlu

BigQuery ML ile Çok Terimli Regresyon

Cem İstanbullu

Power BI ile CRM Analitiği - IV: Müşteri Yaşam Boyu Değeri (CLTV) Tahmini

Melda Özdin

SON ARAŞTIRMALAR

GİRİŞ

Aşağıya kaydolduğunuz e-postayı girin. Şifrenizi sıfırlamanız için size bir bağlantı göndereceğiz.

Giriş Ekranına Dön
Şifre sıfırlama talimatları
adresine gönderildi.