Małe zmiany, duże zyski - optymalizacja silnika topologii w Dynatrace

Prędzej czy później każdy programista staje przed wyzwaniem rozwiązania problemów z wydajnością aplikacji. I pewnie wielu z nas zastanawia się wtedy, czy można było tego uniknąć. Dlaczego od razu nie napisano tego inaczej? Odpowiedź jest często bardzo prosta: bo nikt nie wyobrażał sobie takiej skali. Gdy ponad 7 lat temu pisano silnik topologii w Dynatrace największe środowiska klientów, które monitorowaliśmy, miały po 200-300 hostów. Kod pisano z myślą o 1000 hostów. A dziś mamy środowiska po 30 tysięcy hostów. Nie dziwi więc fakt, że co jakiś czas musimy zmierzyć się z tematem wydajności. Tym razem należało w krótkim czasie znacząco zmniejszyć użycie pamięci. Chciałbym podzielić się swoim doświadczeniem z „bitwy”, jaką stoczyliśmy na początku roku. Opowiem, jak analizować problemy pamięciowe i jak wytypować obszary do optymalizacji. Na przykładzie historii z silnika topologii w Dynatrace pokażę, jak niedużym nakładem pracy zmniejszyć użycie pamięci i poprawić wydajność. Po drodze odpowiem na wiele ciekawych pytań, m.in.: · Dlaczego nie powinieneś (nad)używać HashSetów? · Czemu warto pomyśleć dwa razy zanim napisze się kolejną lambdę? · Co jest złego w foreach`ach? · Jak łatwo zaoszczędzić pamięć na kolekcjach? · Czy warto zmieniać Integery na inty i jak pogodzić to z kolekcjami? · Dlaczego powinieneś zaprzyjaźnić się ze słowami: break, continue i return? Zaprezentuję efekty jakie uzyskaliśmy i nasze wnioski na przyszłość. Serdecznie zapraszam.

speaker photo

Arkadiusz Banaś

Programista z zamiłowania, fizyk z wykształcenia. Pracuje na stanowisku Senior Software Engineer w Dynatrace, z którym jest związany od prawie 5 lat. W międzyczasie założył software house, rozszerzając swoje doświadczenie o prowadzenie i organizację pracy całej firmy. Chętnie opowiada zarówno o efektywnej i dobrze zorganizowanej pracy, jaki i o swoim doświadczeniu w programowaniu.

zobacz nagranie