Poprawa zarządzania danymi i pamięcią

R, jak każdy język programowania, jest ograniczony przez procesor, pamięć RAM i wejścia / wyjścia, a my skupiliśmy się na zwiększeniu szybkości części procesora. Jednak znaczny wzrost wydajności można osiągnąć, zwiększając efektywność wykorzystania pamięci RAM i we / wy. Pomiar wykorzystania pamięci RAM (pamięci) najlepiej wykonywać poza językiem R przy użyciu narzędzi dostarczonych przez system operacyjny do tego właśnie celu. Informacje, które raportują te narzędzia, różnią się w zależności od systemu operacyjnego, ale oto kluczowe wskaźniki, na które należy zwrócić uwagę: użycie procesora, wolna pamięć, pamięć fizyczna, rozmiar wymiany i bajty odczytu / zapisu na sekundę. Jeśli napotkasz wysokie wykorzystanie procesora, procesor jest prawdopodobnie głównym wąskim gardłem dla wydajności R. Użyj technik profilowania opisanych w tym rozdziale, aby zidentyfikować, które części kodu zajmują większość czasu procesora. Jeśli napotkasz wystarczającą ilość wolnej pamięci systemowej z wysokim poziomem operacji we / wy dysku, kod prawdopodobnie wykonuje wiele operacji odczytu / zapisu na dysku. Usuń wszystkie niepotrzebne operacje we / wy i przechowuj dane pośrednie w pamięci, jeśli jest wystarczająca ilość pamięci. Jeśli napotkasz niskie wykorzystanie procesora i małą ilość wolnej pamięci systemowej przy dużym rozmiarze wymiany, prawdopodobnie systemowi zabraknie pamięci fizycznej i tym samym wymienia pamięć na dysk. W takim przypadku sprawdź, czy masz wystarczająco dużo zasobów, aby obsłużyć obciążenia, które wysyłasz do R, a jeśli to zrobisz, spróbuj użyć funkcji rm(), aby usunąć nieużywane obiekty, które czekają na pamięć z sesji R. Jeśli napotkasz scenariusz podobny do poprzedniego, ale wiesz, że nie masz wystarczającej ilości pamięci, aby obsłużyć pełne dane, z którymi pracujesz, nawet jeśli zrobiłeś to skutecznie, możesz spróbować podzielić swoje dane na partycje. Czy możesz pracować z podzbiorem danych według części, a następnie połączyć wyniki? Jeśli tak, powinieneś spróbować. Na przykład, jeśli pełne dane nie mieszczą się w pamięci i próbujesz znaleźć maksymalną wartość, możesz podzielić dane na cztery części, załadować je po kolei, obliczyć maksimum dla każdej z nich, i usuń je z pamięci po wykonaniu tej czynności, zachowując maksimum, a następnie uzyskując maksimum z czterech maksimów obliczonych oddzielnie. Inną możliwością dla scenariusza takiego jak poprzedni jest po prostu migracja obsługi danych do bazy danych. Bazy danych są wyspecjalizowanymi narzędziami do przetwarzania danych i pozwalają uniknąć wąskiego gardła w R, ponieważ tylko wstępnie przetworzony podzbiór potrzebnych danych jest wprowadzany do R. Większość baz danych obecnie wykonuje również bardzo wydajne proste operacje, takie jak znajdowanie maksimum.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *