Skip to main content
idego
Rozwój Oprogramowania

Jak szybko szeregować dane

Autor: Idego Group

Jak szybko szeregować dane

Na każdym etapie projektu warto korzystać z metod, które pomagają uprościć i przyspieszyć pracę. Niektóre z nich nie są oczywiste. W tym artykule przedstawiam mój tok myślenia przy rozwiązywaniu problemu szeregowania i porządkowania zbioru danych z wykorzystaniem matematyki na swoją korzyść.

Okazało się to całkiem szybkim rozwiązaniem. Przed jego wdrożeniem szeregowanie zbioru danych składającego się z 60 000 wierszy zajmowało około 1,5 godziny, ale po wdrożeniu zostało skrócone do zaledwie 1,5 minuty.

Wyobraźmy sobie tabelę w bazie danych o nazwie Car zawierającą informacje o konkretnych samochodach i ich parametrach. Użytkownicy chcą zobaczyć ranking samochodów z punktacją od 0 do 100. Parametry obejmują zużycie paliwa, typ silnika i osiągi jezdne.

Właściwe rozwiązanie problemu polega na przeniesieniu wszystkich obliczeń do samej bazy danych. Jedno zapytanie i gotowe. Źródłem problemu jest generowanie liczby w dowolnym zakresie na podstawie określonych parametrów. Funkcja arcus tangens (atan) jest idealna, ponieważ jest dostępna praktycznie w każdym silniku baz danych.

Ta funkcja ma górne ograniczenie, co oznacza, że bez względu na wartość X, wartość Y nigdy nie przekroczy limitu. Równanie zawiera kilka parametrów: A to dzielnik – im większa liczba, tym wolniej rosną wartości Y; T to górny limit; B to dolny limit; a X to suma parametrów.

Do implementacji używa się Django, aby pokazać strukturę tabeli, a zapytanie jest dostępne w Django ORM oraz w surowym SQL. Zapytanie ORM używa zmiennych pomocniczych, aby kod był czytelniejszy, a zapytanie aktualizujące jest proste i szybkie.

Ogólna grupa takich funkcji nazywa się funkcjami aktywacji i obejmuje wiele konkretnych funkcji, jak ReLU i inne. Poprawa czasu jest naprawdę drastyczna – z 1,5 godziny do 1,5 minuty. Matematyka i inne dziedziny rozwiązały już wiele problemów, z którymi na co dzień zmagamy się w tej branży – więc czemu z nich nie korzystać?

Powiązane artykuły