Как записать использование ОЗУ во время выполнения Python и C ++?

Я хочу сравнить потребление ОЗУ для реализации Python против C ++ написанного мной кода. По сути, я ищу такую ​​команду, как:

<record ram> python3 main.py

и

<record this runtime ram> g++ main.cpp

. Можно ли записывать ОЗУ для конкретной задачи, подобной этой, в Linux Ubuntu?

Спасибо за ваше время.

0
задан 31 July 2020 в 20:45

1 ответ

Вы можете прочитать текстовый файл / prof / self / stat после того, как будет выполнено все распределение памяти. Его поля описаны здесь . В Linux мы имеем в виду два типа памяти:

  • Размер резидентного набора (RSS) - это объем памяти, выделенный процессу и в ОЗУ,
  • Размер виртуальной памяти (VMZ) - это объем выделенной памяти, включая выгруженную память и память, выделенную совместно используемыми библиотеками.

Из файла stat прочитайте vsize и ] Новости . Прочитав это, вы можете найти размер в kb , используя следующее в C ++.

#include <unistd.h>
...

long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // in case x86-64 is configured to use 2MB pages
vm_usage     = vsize / 1024.0;
resident_set = rss * page_size_kb;

В Python вы можете использовать os.sysconf ("SC_PAGE_SIZE") , чтобы получить PAGE_SIZE и выполните эквивалентные вычисления.

Вы также можете изучить Valgrind для этой цели.

0
ответ дан 2 August 2020 в 21:59

Другие вопросы по тегам:

Похожие вопросы: