code: def _main():
      import matplotlib.pylab as plt
      import pandas as pd
  
      fig, axarr = plt.subplots(nrows=len(MODEL_CLASSES))
  
      for i, cls_model in enumerate(MODEL_CLASSES):
          path_csv = os.path.join(
              PATH_HERE, f"dump-times_{cls_model.__name__}.csv"
          )
          if os.path.isfile(path_csv):
              df_time = pd.read_csv(path_csv, index_col=0)
          else:
              # todo: kind="Vanilla PT" -> use_lightning=False
              vanilla = measure_loops(
                  cls_model,
                  kind="Vanilla PT",
                  num_epochs=NUM_EPOCHS,
                  num_runs=NUM_RUNS,
              )
              lightning = measure_loops(
                  cls_model,
                  kind="PT Lightning",
                  num_epochs=NUM_EPOCHS,
                  num_runs=NUM_RUNS,
              )
  
              df_time = pd.DataFrame(
                  {
                      "vanilla PT": vanilla["durations"][1:],
                      "PT Lightning": lightning["durations"][1:],
                  }
              )
              df_time /= NUM_RUNS
              df_time.to_csv(
                  os.path.join(
                      PATH_HERE, f"dump-times_{cls_model.__name__}.csv"
                  )
              )
          # todo: add also relative X-axis ticks to see both: relative and absolute time differences
          df_time.plot.hist(
              ax=axarr[i],
              bins=20,
              alpha=0.5,
              title=cls_model.__name__,
              legend=True,
              grid=True,
          )
          axarr[i].set(xlabel="time [seconds]")
  
      path_fig = os.path.join(
          PATH_HERE, f"figure-parity-times{FIGURE_EXTENSION}"
      )
      fig.tight_layout()
      fig.savefig(path_fig)
  
label_desc: Use image node_id 1 for calling a global function with example usage: _main() without return types