Skip to content

Commit b56b25a

Browse files
neilkgmeeseeksmachine
authored andcommitted
Backport PR pandas-dev#33102: PERF: fix performance regression in memory_usage(deep=True) for object dtype
1 parent 2d0acbd commit b56b25a

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

asv_bench/benchmarks/frame_methods.py

+13
Original file line numberDiff line numberDiff line change
@@ -619,4 +619,17 @@ def time_select_dtypes(self, n):
619619
self.df.select_dtypes(include="int")
620620

621621

622+
class MemoryUsage:
623+
def setup(self):
624+
self.df = DataFrame(np.random.randn(100000, 2), columns=list("AB"))
625+
self.df2 = self.df.copy()
626+
self.df2["A"] = self.df2["A"].astype("object")
627+
628+
def time_memory_usage(self):
629+
self.df.memory_usage(deep=True)
630+
631+
def time_memory_usage_object_dtype(self):
632+
self.df2.memory_usage(deep=True)
633+
634+
622635
from .pandas_vb_common import setup # noqa: F401 isort:skip

pandas/core/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1356,7 +1356,7 @@ def memory_usage(self, deep=False):
13561356

13571357
v = self.array.nbytes
13581358
if deep and is_object_dtype(self) and not PYPY:
1359-
v += lib.memory_usage_of_objects(self.array)
1359+
v += lib.memory_usage_of_objects(self._values)
13601360
return v
13611361

13621362
@Substitution(

0 commit comments

Comments
 (0)