Нужно придумать свои типы с несколькими атрибутами:
- класс с обычными атрибутами
- класс со слотами
- класс с атрибутами weakref
Для каждого класса создается большое число экземпляров и замеряется (сравнивается):
- время создания пачки экземпляров
- время чтения/изменения атрибутов
Результаты замеров оформляются скриншотами c описанием и выводом.
Провести профилирование вызовов и памяти для кода из пункта 1.
Результаты оформляются скриншотами c описанием.
Применение декоратора к функции должно выполнять прoфилирование (cProfile) всех вызовов данной функции.
Вызов метода .print_stat()
должен выводить единую таблицу со статистикой профилирования суммарно по всем вызовам функции.
def profile_deco(...):
...
@profile_deco
def add(a, b):
return a + b
@profile_deco
def sub(a, b):
return a - b
add(1, 2)
add(4, 5)
sub(4, 5)
add.print_stat() # выводится результат профилирования суммарно по всем вызовам функции add (всего два вызова)
sub.print_stat() # выводится результат профилирования суммарно по всем вызовам функции sub (всего один вызов)