@@ -30,20 +30,31 @@ def get_deep_size(obj, seen=None):
30
30
"""Recursively calculates the size of an object including nested lists and dicts."""
31
31
if seen is None :
32
32
seen = set ()
33
+ size = - 8 * 3 # Subtract 8 for each of the 3 attribute lists as those don't count.
34
+ else :
35
+ size = 0
33
36
34
37
# Avoid recursion for already seen objects (handle circular references)
35
38
obj_id = id (obj )
36
39
if obj_id in seen :
37
40
return 0
38
41
seen .add (obj_id )
39
42
40
- size = 0
41
- if isinstance (obj , dict ):
43
+ if isinstance (obj , str ):
44
+ size += len (obj )
45
+ return size
46
+ elif isinstance (obj , float ) or isinstance (obj , int ):
47
+ size += 8
48
+ return size
49
+ elif isinstance (obj , bool ):
50
+ size += 1
51
+ return size
52
+ elif isinstance (obj , dict ):
42
53
size += sum (get_deep_size (k , seen ) + get_deep_size (v , seen ) for k , v in obj .items ())
43
54
elif isinstance (obj , (list , tuple , set , frozenset )):
44
- size += sum (get_deep_size (i , seen ) for i in obj )
55
+ size += 8 + sum (get_deep_size (i , seen ) for i in obj )
45
56
else :
46
- size = sys . getsizeof ( obj )
57
+ size += 8
47
58
48
59
return size
49
60
@@ -52,24 +63,26 @@ def get_deep_size_protobuf(obj):
52
63
"""Recursively calculates the size of an object including nested lists and dicts."""
53
64
size = 0
54
65
if hasattr (obj , "string_value" ):
55
- size += sys . getsizeof (obj .string_value )
66
+ size += len (obj .string_value )
56
67
return size
57
68
elif hasattr (obj , "double_value" ):
58
- size += sys . getsizeof ( obj . double_value )
69
+ size += 8
59
70
return size
60
71
elif hasattr (obj , "int_value" ):
61
- size += sys . getsizeof ( obj . int_value )
72
+ size += 8
62
73
return size
63
74
elif hasattr (obj , "bool_value" ):
64
- size += sys . getsizeof ( obj . bool_value )
75
+ size += 1
65
76
return size
66
77
67
78
if hasattr (obj , "agent_attributes" ):
68
- size += sum (sys . getsizeof (k ) + get_deep_size_protobuf (v ) for k , v in obj .agent_attributes .items ())
79
+ size += sum (len (k ) + get_deep_size_protobuf (v ) for k , v in obj .agent_attributes .items ())
69
80
if hasattr (obj , "user_attributes" ):
70
- size += sum (sys . getsizeof (k ) + get_deep_size_protobuf (v ) for k , v in obj .user_attributes .items ())
81
+ size += sum (len (k ) + get_deep_size_protobuf (v ) for k , v in obj .user_attributes .items ())
71
82
if hasattr (obj , "intrinsics" ):
72
- size += sum (sys .getsizeof (k ) + get_deep_size_protobuf (v ) for k , v in obj .intrinsics .items ())
83
+ size += sum (len (k ) + get_deep_size_protobuf (v ) for k , v in obj .intrinsics .items ())
84
+ else :
85
+ size += 8
73
86
74
87
return size
75
88
0 commit comments