Przyspieszanie skryptów – sprawdź ile trwa twój kod

Język R ciągle się rozwija. Użytkownicy tworzą i udostępniają coraz to więcej nowych funkcji. Niektóre z nich robią to samo co powstałe wcześniej, ale w krótszym czasie. Technologia po prostu idzie do przodu:)

W trakcie pisania lub optymalizacji istniejącego kodu najlepiej sprawdzić czy wykorzystane/napisane przez nas rozwiązanie nie jest czasami wolniejsze od innego podejścia do problemu. Możemy to zrobić z użycie dwóch narzędzi zaimplementowanych w bazowym R: Sys.time i system.time. Pokażemy Wam dzisiaj jak wykorzystać je wykorzystać. Na początek sprawdzimy jak szybko wczytują się dane wektorowe przy wykorzystaniu funkcji z pakietu rgdal i sf. Wczytamy warstwę prawie 600 tys. budynków z projektu OSM dla woj. mazowieckiego:

Sys.time zwraca konkretny czas. Do sprawdzenia szybkości działania funkcji najpierw musimy zapisać do zmiennej np. start_time czas początkowy, a następnie po wykonaniu funkcji/części kodu odjąć czas zakończenia od czasu startowego. W naszym przypadku będzie wyglądało to tak:

Sprawdźmy ile poszczególne funkcje wczytują dane:

Sf jest ponad 8x szybszy:)

A jak zastosować system.time. Ta funkcja zwraca czas działanie całej funkcji. Możemy także stworzyć naszą funkcję, zawierającą część skryptu i sprawdzić ile ona zajmuje. Tym razem wczytamy użytkowanie terenu z OSM:

I napiszemy dwie funcje:

I wpiszemy je do system.time:

Wynik system.time wygląda następująco:

Tym razem sf poradził sobie 10x szybciej.

Pokazaliśmy Wam dzisiaj jak w łatwy sposób wykorzystać podstawowe funkcje do pomiaru czasu działania poszczególnych części kodu. Jak widzicie dwie funkcje robią to samo (wczytują shp do R) w znacząco różnym czasie. Zalecamy zatem, aby przetestować kilka rozwiązań, a czasami napisać swoją funkcję, która może działać szybciej od już opracowanych.

Świat musi iść do przodu:) Miłego optymalizowania:)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Translate using Google Translate»
Social media & sharing icons powered by UltimatelySocial

Podoba Ci się nasza strona? Odwiedź nasz profil