code: def run(cls) -> None:
      print("# Installed libraries:\n")
      installed = list(cls.get_installed())
      installed.sort()
      print(cls.get_table(installed))
  
      print("# Benchmarks (with textdistance):\n")
      benchmark = list(cls.get_external_benchmark(installed))
      benchmark_internal = list(cls.get_internal_benchmark())
      benchmark += benchmark_internal
      benchmark.sort(key=lambda x: (x.algorithm, x.time))
      print(cls.get_table(benchmark))
  
      benchmark = list(
          cls.filter_benchmark(benchmark, benchmark_internal)
      )
      cls.save(benchmark)
  
file_path: textdistance/textdistance/benchmark.py
imports: from __future__ import annotations
  import json
  import math
  from collections import defaultdict
  from timeit import timeit
  from typing import Iterable, Iterator, NamedTuple
  from tabulate import tabulate
  from .libraries import LIBRARIES_PATH, prototype
label_desc: Use image node_id 7 for calling the Benchmark obj's underlying member method code with example usage: obj.run(cls) without return types