class_docstr: Unit test for PerformanceProfiler.
class_docstr_tok: ["Unit","test","for","PerformanceProfiler","."]
code: def test_tracer_concat(self):
      pipe0 = pipe.input("a", "b", "c")
      pipe1 = pipe0.map("a", "d", ops.add_operator(10))
      pipe2 = pipe0.map(("b", "c"), "e", ops.cal())
      pipe3 = pipe0.map(("b", "c"), "f", ops.cal())
      pipe4 = pipe3.concat(pipe1, pipe2).output("d", "e", "f")
      _ = pipe4.debug(1, 2, 3, profiler=True)
      _ = pipe4.debug(2, 2, 3, profiler=True)
      v = pipe4.debug(8, 2, 3, profiler=True)
  
      pp = v.profiler
      self.assertEqual(len(pp.pipes_profiler), 1)
      self.assertEqual(len(pp.node_report), 6)
      pp.sort()[0].show()
      pp.max().show()
  
imports: import json
  import unittest
  from pathlib import Path
  from towhee import pipe
  from towhee import ops, register
  from towhee.runtime.time_profiler import TimeProfiler
  from towhee.tools.profilers import PerformanceProfiler
label_desc: Use image node_id 2 for calling the TestPerformanceProfiler obj's underlying member method code with example usage: obj.test_tracer_concat() without return types