code: def test_dataframe_object_dtype(dtype):
      x = "x" * 100_000
      y = "y" * 100_000
      z = "z" * 100_000
      w = "w" * 100_000
  
      # High duplication of references to the same object, across different columns
      objs = [x, y, z, w]
      df1 = pd.DataFrame([objs * 3] * 1000, dtype=dtype)
      assert 400_000 < sizeof(df1) < 550_000
  
      # Low duplication of references to the same object, across different columns
      df2 = pd.DataFrame([[x, y], [z, w]], dtype=dtype)
      df3 = pd.DataFrame([[x, y], [z, x]], dtype=dtype)
      df4 = pd.DataFrame([[x, x], [x, x]], dtype=dtype)
      assert sizeof(df4) < sizeof(df3) < sizeof(df2)
  
imports: from __future__ import annotations
  import os
  import sys
  from array import array
  import pytest
  from dask.multiprocessing import get_context
  from dask.sizeof import sizeof
  from dask.utils import funcname
label_desc: Use image node_id 13 for calling a global function with example usage: test_dataframe_object_dtype(dtype) without return types