30 #ifndef _GLIBCXX_PROFILE_PROFILER_CONTAINER_SIZE_H
31 #define _GLIBCXX_PROFILE_PROFILER_CONTAINER_SIZE_H 1
39 namespace __gnu_profile
47 : _M_init(0), _M_max(0), _M_min(0), _M_total(0), _M_item_min(0),
48 _M_item_max(0), _M_item_total(0), _M_count(0), _M_resize(0), _M_cost(0)
53 _M_min(__o._M_min), _M_total(__o._M_total),
54 _M_item_min(__o._M_item_min), _M_item_max(__o._M_item_max),
55 _M_item_total(__o._M_item_total), _M_count(__o._M_count),
56 _M_resize(__o._M_resize), _M_cost(__o._M_cost)
61 _M_min(0), _M_total(0), _M_item_min(0), _M_item_max(0),
62 _M_item_total(0), _M_count(0), _M_resize(0), _M_cost(0)
68 __write(FILE* __f)
const
70 std::fprintf(__f,
"%Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu %Zu\n",
71 _M_init, _M_count, _M_cost, _M_resize, _M_min, _M_max,
72 _M_total, _M_item_min, _M_item_max, _M_item_total);
77 {
return static_cast<float>(_M_cost); }
83 if (_M_init < _M_item_max)
84 __message <<
"change initial container size from " << _M_init
85 <<
" to " << _M_item_max;
86 return __message.
str();
92 _M_init =
std::max(_M_init, __o._M_init);
93 _M_max =
std::max(_M_max, __o._M_max);
94 _M_item_max =
std::max(_M_item_max, __o._M_item_max);
95 _M_min =
std::min(_M_min, __o._M_min);
96 _M_item_min =
std::min(_M_item_min, __o._M_item_min);
97 _M_total += __o._M_total;
98 _M_item_total += __o._M_item_total;
99 _M_count += __o._M_count;
100 _M_cost += __o._M_cost;
101 _M_resize += __o._M_resize;
106 __destruct(std::size_t __num, std::size_t __inum)
109 _M_item_max =
std::max(_M_item_max, __inum);
113 _M_item_min = __inum;
118 _M_item_min =
std::min(_M_item_min, __inum);
121 _M_item_total += __inum;
127 __resize_cost(std::size_t __from, std::size_t)
132 __resize(std::size_t __from, std::size_t __to)
134 _M_cost += this->__resize_cost(__from, __to);
143 std::size_t _M_total;
144 std::size_t _M_item_min;
145 std::size_t _M_item_max;
146 std::size_t _M_item_total;
147 std::size_t _M_count;
148 std::size_t _M_resize;
165 :
public __trace_base<__container_size_info, __container_size_stack_info>
175 __insert(
const __object_t __obj, __stack_t __stack, std::size_t __num)
180 __construct(
const void* __obj, std::size_t __inum);
184 __destruct(
const void* __obj, std::size_t __num, std::size_t __inum)
189 __object_t __obj_handle =
static_cast<__object_t
>(__obj);
195 __object_info->__destruct(__num, __inum);
196 __retire_object(__obj_handle);
201 __resize(
const void* __obj,
int __from,
int __to)
210 __object_info->__resize(__from, __to);