class_docstr: Benchmark that times performance of chunk graph assigner
code: def setup(self):
      tracemalloc.start()
      random.seed()
  
      num_rows = 10000
      df1 = md.DataFrame(
          mt.random.rand(num_rows, 4, chunk_size=10),
          columns=list("abcd"),
      )
      df2 = md.DataFrame(
          mt.random.rand(num_rows, 4, chunk_size=10),
          columns=list("abcd"),
      )
      merged_df = df1.merge(
          df2,
          left_on="a",
          right_on="a",
          auto_merge="none",
          bloom_filter=False,
      )
      graph = TileableGraph([merged_df.data])
      next(TileableGraphBuilder(graph).build())
      self.chunk_graph = next(
          ChunkGraphBuilder(graph, fuse_enabled=False).build()
      )
      self.mem_size, self.mem_peak = tracemalloc.get_traced_memory()
      tracemalloc.stop()
  
file_path: mars/benchmarks/asv_bench/benchmarks/graph_assigner.py
imports: import random
  import tracemalloc
  import mars.tensor
  import mars.dataframe
  from mars.core.graph import TileableGraph, TileableGraphBuilder, ChunkGraphBuilder
  from mars.resource import Resource
  from mars.services.task.analyzer import GraphAnalyzer
  from mars.services.task.analyzer.assigner import GraphAssigner
label_desc: Use image node_id 1 for calling the ChunkGraphAssignerSuite obj's underlying member method code with example usage: obj.setup() without return types