← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 19: Вимірювання швидкодії

Технологія: Python

Номер лабораторної: 19 · Рівень: middle

Тема: Профілювання і оптимізація

Повний опис / сценарій лабораторної:

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: опиши підхід до оптимізації критичних ділянок коду без передчасної оптимізації.