Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#include <array>
#include <iostream>
#include <memory>

#include "HLTrigger/Timer/interface/memory_usage.h"

void print_thread_header() {
  std::cout << "+allocated / -deallocated / < peak memory for the current thread:" << std::endl;
}

void print_thread_stat() {
  std::cout << "\t+" << (memory_usage::allocated() / 1024) << " kB / "  // allocated memory, in kB
            << "-" << (memory_usage::deallocated() / 1024) << " kB / "  // deallocated memory, in kB
            << "< " << (memory_usage::peak() / 1024) << " kB"           // peak used memory, in kB
            << std::endl;
}

int main(void) {
  constexpr int size = 10;
  std::array<std::unique_ptr<std::byte[]>, size> buffers;

  print_thread_header();
  print_thread_stat();

  for (auto& buffer : buffers) {
    buffer = std::make_unique<std::byte[]>(16 * 1024);
    print_thread_stat();
  }

  for (auto& buffer : buffers) {
    buffer.reset();
    print_thread_stat();
  }

  std::cout << std::endl;
  memory_usage::reset_peak();
  print_thread_header();
  print_thread_stat();

  for (auto& buffer : buffers) {
    buffer = std::make_unique<std::byte[]>(16 * 1024);
    print_thread_stat();
    buffer.reset();
    print_thread_stat();
  }

  return 0;
}