Źle zoptymalizowany kod działa poprawnie, ale nie jest wydajny, nie działa dobrze lub zgodnie z oczekiwaniami. Prawie cały kod można ulepszyć. Możesz chcieć zoptymalizować kod, aby działał szybciej, poprawić jego jakość lub aby działał w ramach ograniczeń sprzętu lub innych czynników środowiskowych. Python jest jednym z najczęściej używanych języków programowania i jest szczególnie popularny i przydatny podczas pracy z uczeniem maszynowym. Jednak Python jest notorycznie powolny w porównaniu z innymi językami programowania. Gdy połączysz powolność Pythona z wymaganiami przetwarzania i pamięci zadań uczenia maszynowego, wynikiem może być program, którego uruchomienie zajmuje bardzo dużo czasu i monopolizuje zasoby komputera podczas działania. Jednak powolność działania programu nie jest tylko winą języka, kompilatora i podstawowego sprzętu. Decyzje podejmowane podczas kodowania mogą w większym stopniu wpłynąć na wydajność programu. Identyfikacja możliwości poprawy wydajności wymaga czasu i doświadczenia. Optymalizacja kodu zaczyna się od profilowania, czyli techniki wykrywającej, ile czasu zajmuje uruchomienie każdej funkcji w programie i jak często jest wykonywana. Profilowanie powie Ci, które obszary Twojego programu wymagają optymalizacji. Narzędzie, które wykonuje profilowanie, nazywa się profilerem. Łącząc pracę tradycyjnego profilera z sugestiami od czatbota AI, możesz dowiedzieć się, jaki kod działa wolno i uzyskać sugestie dotyczące możliwych ulepszeń.
<-TU
Uzyskiwanie sugestii dotyczących optymalizacji kodu
Scalene to profiler procesora, procesora graficznego i pamięci dla Pythona, który profiluje kod i oferuje proponowane optymalizacje oparte na AI. Zainstalowałem i uruchomiłem Scalene na macOS. Wersja Scalene na Windows nie obsługuje wszystkich tych samych funkcji, co wersja na Linuxa lub macOS w momencie pisania tego tekstu. Zanim zainstalujesz Scalene, musisz zainstalować i skonfigurować Pythona. Ponieważ Scalene wykorzystuje modele OpenAI, musisz również mieć konto OpenAI z dodatnim saldem, aby korzystać z funkcji AI. Aby dowiedzieć się, jak uzyskać konto OpenAI i klucz API, zobacz rozdział 4. Następnie wykonaj następujące kroki, aby zainstalować Scalene i przetestować go:
- Odwiedź repozytorium GitHub dla Scalene na https://github.com/plasmaumass/scalene, aby dowiedzieć się więcej.
- W systemie macOS, Linux lub Windows Subsystem for Linux (WSL2) użyj następującego polecenia pip, aby zainstalować pakiet Scalene:
pip install -U scalene
- Sklonuj repozytorium Scalene GitHub do wygodnego miejsca na swoim komputerze, wprowadzając następujące polecenie w oknie terminala:
git clone https://github.com/plasma-umass/scalene
Repozytorium GitHub zawiera katalog plików Python, których użyjemy do przetestowania Scalene.
- Otwórz repozytorium Scalene GitHub w VS Code.
- W panelu Rozszerzenia w VS Code znajdź i zainstaluj rozszerzenie Scalene VS Code, jak pokazano na rysunku

- Otwórz test/testme.py w VS Code. Ten program nie robi niczego użytecznego, ale możemy go użyć do zademonstrowania, co potrafi Scalene.
- Naciśnij Command+Shift+P (macOS) lub Ctrl+Shift+P (Windows), aby otworzyć paletę poleceń VS Code.
- Wpisz Scalene w palecie poleceń, aż zobaczysz polecenie Scalene:
AI-Powered Profiling. . . Kliknij to polecenie, aby je uruchomić.
W VS Code pojawia się komunikat informujący, że Scalene profiluje kod. Po zakończeniu w VS Code otwiera się raport, jak pokazano na rysunku

- Przejrzyj raport.Na moim komputerze program działał 10,646 sekund i używał maksymalnie 20,536 MB pamięci. Zwróć uwagę na wiersze kodu z ikoną błyskawicy lub fajerwerków po lewej stronie. Ikona fajerwerków oznacza, że Scalene zaproponował optymalizacje dla tego wiersza lub regionu kodu; kliknij ikonę, aby wyświetlić optymalizacje. Ikona błyskawicy powoduje, że Scalene proponuje optymalizacje dla wierszy kodu, dla których pierwotnie nie znalazł optymalizacji, lub próbuje wygenerować inny kod dla wierszy, dla których zaproponował optymalizację.
10. Aby wprowadzić klucz API OpenAI do Scalene, kliknij łącze Opcje zaawansowane (pod logo Scalene u góry raportu Scalene), jak pokazano na rysunku.

- W polu wprowadzania w obszarze opcji zaawansowanych wklej klucz API OpenAI, a następnie zamknij opcje zaawansowane, klikając ponownie łącze Opcje zaawansowane.
12. Kliknij ikonę fajerwerków w raporcie Scalene’a. Po chwili proponowana optymalizacja pojawi się poniżej linii oznaczonej ikoną fajerwerków, jak pokazano na rysunku

Pozostaw kartę zawierającą oryginalny raport otwartą, aby móc porównać go z nowym raportem.
- Przejrzyj proponowaną optymalizację. Jeśli chcesz zobaczyć inną propozycję, kliknij ponownie ikonę fajerwerków.
14. Gdy znajdziesz optymalizację, która ma dla Ciebie sens, zaimplementuj ją w swoim kodzie i ponownie uruchom Scalene. Nowy raport pojawi się w nowej karcie w VS Code, jak pokazano na rysunku

- Jeśli Twój pierwszy raport jest nadal otwarty, porównaj oba raporty, aby dowiedzieć się, czy wdrożenie optymalizacji poprawiło wydajność programu.
Plik testme.py został zaprojektowany tak, aby był jak najmniej wydajny, aby zademonstrować Scalene. Jednak optymalizując tylko pierwszą funkcję, udało mi się zmniejszyć pamięć do 0 MB i czas wykonania o około 4,5 sekundy.