Panda3D
Loading...
Searching...
No Matches
memoryUsagePointerCounts.cxx
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file memoryUsagePointerCounts.cxx
10 * @author drose
11 * @date 2001-06-04
12 */
13
15#include "memoryInfo.h"
16
17/**
18 * Adds a pointer definition to the counter.
19 */
21add_info(MemoryInfo *info) {
22#ifdef DO_MEMORY_USAGE
23 _count++;
24
25 if (info->is_size_known()) {
26 _size += info->get_size();
27 } else {
28 _unknown_size_count++;
29 }
30#endif
31}
32
33/**
34 *
35 */
36void MemoryUsagePointerCounts::
37output(std::ostream &out) const {
38#ifdef DO_MEMORY_USAGE
39 out << _count << " pointers";
40 if (_unknown_size_count < _count) {
41 out << ", ";
42 output_bytes(out, _size);
43 out << ", avg ";
44 output_bytes(out, _size / (_count - _unknown_size_count));
45 out << " each";
46
47 if (_unknown_size_count != 0) {
48 out << " (" << _unknown_size_count << " of unknown size)";
49 }
50 }
51#endif
52}
53
54/**
55 * Formats a size in bytes in a meaningful and concise way for output, with
56 * units.
57 */
58void MemoryUsagePointerCounts::
59output_bytes(std::ostream &out, size_t size) {
60#ifdef DO_MEMORY_USAGE
61 if (size < 4 * 1024) {
62 out << size << " bytes";
63
64 } else if (size < 4 * 1024 * 1024) {
65 out << size / 1024 << " Kb";
66
67 } else {
68 out << size / (1024 * 1024) << " Mb";
69 }
70#endif
71}
void add_info(MemoryInfo *info)
Adds a pointer definition to the counter.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.