Zrozumienie, dlaczego język programowania może być powolny, jest podstawową umiejętnością potrzebną do zwiększenia szybkości jego implementacji. Na każdą implementację w dowolnym języku programowania ma podobny wpływ czas algorytmu i złożoność pamięci, ponieważ są one algorytmami, a nie właściwościami implementacji. Jednak sposób, w jaki języki obsługują określone implementacje, może się znacznie różnić i na tym się teraz skupimy. W przypadku R ludzie często znajdują cztery główne wąskie gardła:
* Niezmienność obiektu
* Zinterpretowane dynamiczne typy
* Procesy związane z pamięcią
* Procesy jednowątkowe
W żadnym wypadku ta lista nie jest kompletna ani nie występuje w każdej implementacji. To tylko najczęstsze wąskie gardła, jakie widziałem, a które po naprawieniu spowodowały największą liczbę ulepszeń szybkości. Często są to dobre punkty wyjścia, ale każda implementacja jest inna, więc bardzo trudno jest zasugerować ogólne zasady optymalizacji wydajności i należy o tym pamiętać.