Parę ciekawostek odnośnie optymalizacji kodu w ruby
Czasem warto poznać różne "sztuczki" aby przyspieszyć aplikację napisaną w ruby. Przejdźmy od razu do rzeczy:1. Zamiast używać begin..rescue podczas zabezpieczenia się przed NoMethodError można użyć Object#respond_to?(:metoda)
Przyspieszenie: 10x
2) Jeśli mamy posortowaną tablicę to użycie Array#bsearch zamiast popularnego Array#find przyspieszy niemalże "diabolicznie" ;) Array#find działa w taki sposób, że sprawdza warunek na każdym elemencie, natomiast Array#bsearch (przeszukiwanie binarne) znajduje środek a następnie sprawdza warunek czy wartość jest większa, mniejsza, równa wtedy podejmuje decyzję czy szukać środka w pierwszej części czy w drugiej. Szczegółowe wytłumaczenie można zobaczyć sobie tutaj: http://en.wikipedia.org/wiki/Binary_search_algorithm
3) Zamiast Hash#merge można zastosować Hash#merge! Działa to szybciej dlatego, że merge! wykona operację bez zbędnego kopiowania siebie samego.
Przyspieszenie: 25x
4) Losowa wartość z tablicy. Array#shufle.first - działa w taki sposób, że najpierw alokuje miejsce w pamięci dla kopii tablicy a następnie kopiuje losowo wartości. Jak widać musi sporo pracy wykonać. Zamiast "szufli", można skorzystać z Array#sample
Przyspieszenie: 17x
Ruby ma więcej takich rzeczy, postaram się wyciągnąć podobne, które rozsiane są po różnych konferencjach.
opracowane na podst. https://www.omniref.com/github/JuanitoFatas/fast-ruby/HEAD/files/Rakefile
3 komentarze:
Fajnie wyczerpany teamt.
Na dobrą sprawę ja się samym programowaniem nie zajmuję i jestem zdania, ze w to miejsce fajnie sprawdza się audyt SEO. Nawet jak czytałam w https://medialnie.info/audyt-seo/ to moim zdaniem fajnie jest wiedzieć co się dzieje na naszej stronie www.
Ładnie to wygląda.
Prześlij komentarz