# Copyright (c) Alibaba, Inc. and its affiliates. import glob import importlib import os import time from evalscope.benchmarks.benchmark import Benchmark, BenchmarkMeta from evalscope.benchmarks.data_adapter import DataAdapter from evalscope.utils import get_logger logger = get_logger() # Using glob to find all files matching the pattern pattern = os.path.join(os.path.dirname(__file__), '*', '**', '*_adapter.py') files = glob.glob(pattern, recursive=True) import_times = [] for file_path in files: if file_path.endswith('.py') and not os.path.basename(file_path).startswith('_'): # Convert file path to a module path relative_path = os.path.relpath(file_path, os.path.dirname(__file__)) module_path = relative_path[:-3].replace(os.path.sep, '.') # strip '.py' and convert to module path full_path = f'evalscope.benchmarks.{module_path}' start_time = time.perf_counter() importlib.import_module(full_path) end_time = time.perf_counter() import_times.append((full_path, end_time - start_time)) # Sort by import time in descending order import_times.sort(key=lambda x: x[1], reverse=True) # Log the sorted import times for module, duration in import_times: logger.debug(f'Module {module} imported in {duration:.6f} seconds')