← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
Meta: навчитися вимірювати час виконання коду і знаходити повільні ділянки.
Krok 1. Створити файл src/app/profile19.py з двома реалізаціями певного алгоритму.
Komandi: cd ~/python_lab1/src; printf "def slow_sum(n: int) -> int:
total = 0
for i in range(n):
total += i
return total
def fast_sum(n: int) -> int:
return n * (n - 1) // 2
" > app/profile19.py
Krok 2. Використати timeit для заміру часу кожної функції.
Komanda: python -m timeit -s "from app.profile19 import slow_sum" "slow_sum(1000000)"
Krok 3. Повторити для fast_sum.
Komанда: python -m timeit -s "from app.profile19 import fast_sum" "fast_sum(1000000)"
Krok 4. Створити сценарій який викликає повільну функцію багато разів.
Komanda: printf "from app.profile19 import slow_sum
for _ in range(100):
slow_sum(500000)
" > app/profile19_run.py
Krok 5. Запустити цей сценарій під cProfile.
Komanda: python -m cProfile -o stats19.out app/profile19_run.py
Krok 6. Відкрити звіт через pstats.
Komanda: python -c "import pstats; s = pstats.Stats("stats19.out"); s.sort_stats("cumulative").print_stats(10)"
Krok 7. Замінити slow_sum на fast_sum у сценарії і повторити профілювання.
Krok 8. Порівняти результати і оцінити виграш.
Krok 9. Занотувати які інструменти використовуються для більш детального профілювання у прод середовищі.
Krok 10. Mini zvit.
Zavdannya: опиши підхід до оптимізації критичних ділянок коду без передчасної оптимізації.