evalscope_v0.17.0/evalscope.0.17.0/evalscope/benchmarks/__init__.py

38 lines
1.3 KiB
Python

# 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')