00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "memoryUsagePointerCounts.h"
00016
00017 #ifdef DO_MEMORY_USAGE
00018
00019 #include "memoryInfo.h"
00020
00021
00022
00023
00024
00025
00026 void MemoryUsagePointerCounts::
00027 add_info(MemoryInfo *info) {
00028 _count++;
00029
00030 if (info->is_size_known()) {
00031 _size += info->get_size();
00032 } else {
00033 _unknown_size_count++;
00034 }
00035 }
00036
00037
00038
00039
00040
00041
00042 void MemoryUsagePointerCounts::
00043 output(ostream &out) const {
00044 out << _count << " pointers";
00045 if (_unknown_size_count < _count) {
00046 out << ", ";
00047 output_bytes(out, _size);
00048 out << ", avg ";
00049 output_bytes(out, _size / (_count - _unknown_size_count));
00050 out << " each";
00051
00052 if (_unknown_size_count != 0) {
00053 out << " (" << _unknown_size_count << " of unknown size)";
00054 }
00055 }
00056 }
00057
00058
00059
00060
00061
00062
00063
00064 void MemoryUsagePointerCounts::
00065 output_bytes(ostream &out, size_t size) {
00066 if (size < 4 * 1024) {
00067 out << size << " bytes";
00068
00069 } else if (size < 4 * 1024 * 1024) {
00070 out << size / 1024 << " Kb";
00071
00072 } else {
00073 out << size / (1024 * 1024) << " Mb";
00074 }
00075 }
00076
00077 #endif // DO_MEMORY_USAGE
00078