Przyspieszanie skryptów – znajdź szybszą funkcję (Zonal Statistics)

W pierwszym poście z serii “Przyśpiesz swój skrypt” pokazaliśmy Wam jak wykorzystać bazowe narzędzia R do określenia czasu wykonania danej części skryptu. Dzięki nim dowiedzieliśmy się, że biblioteka sf szybciej wczytuje pliki ESRI Shapefile niż starsza rgdal

Dzisiaj spróbujemy przyspieszyć proste zadanie, jakim jest ekstrakcji średnich wartości z rastra (zobrazowanie Sentinel 2 kanał 8) dla siatki 100 poligonów o kształcie koła o promieniu 10m. 

Oczywiście najprościej użyć do tego funkcji extract znanej nam z biblioteki raster. Dla dużej liczby obiektów narzędzie to jest jednak mało efektywne, dlatego dodatkowo wykorzystamy do tego funkcję:

Na końcu sprawdzimy, która funkcja jest najszybsza.

 

Zaczynamy od załadowania bibliotek, których będziemy używać:

Wczytujemy dane:

Dane wyglądają tak:

Do oceny, która funkcja działa szybciej wykorzystamy bibliotekę microbenchmark:

Dla biblioteki velox trzeba przekonwertować raster na format velox:

Piszemy linijkę kodu odpowiadającą za test:

Uruchamiamy i czekamy na wynik:

Używana dotychczas przez nasz funkcja extract okazała się wolniejsza 44 razy niż exact_extract i 4 razy niż funkcja z biblioteki velox. Z porównania wynika, że inne funkcje użyte do naszego zadania są dużo bardziej efektywne, co znacząco skróci czas naszych obliczeń. Pamiętajmy zatem, że do optymalizacji naszego skryptu warto poświęcić trochę czasu na poszukanie szybszego rozwiązania:) My nie lubimy długo czekać, dlatego już dziś zapraszamy Was na kolejny post o przyspieszaniu skryptów.

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