38 lines
1.3 KiB
Python
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')
|