mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
# ===--- gyb_benchmark_support.py --------------------*- coding: utf-8 -*-===//
|
|
#
|
|
# This source file is part of the Swift.org open source project
|
|
#
|
|
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
# Licensed under Apache License v2.0 with Runtime Library Exception
|
|
#
|
|
# See https://swift.org/LICENSE.txt for license information
|
|
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
|
|
import os
|
|
import re
|
|
|
|
|
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
perf_dir = os.path.realpath(os.path.join(script_dir, '../benchmark'))
|
|
single_source_dir = os.path.join(perf_dir, 'single-source')
|
|
multi_source_dir = os.path.join(perf_dir, 'multi-source')
|
|
|
|
|
|
def all_files(directory, extension): # matching: [directory]/**/*[extension]
|
|
return [
|
|
os.path.join(root, f)
|
|
for root, _, files in os.walk(directory)
|
|
for f in files if f.endswith(extension)
|
|
]
|
|
|
|
|
|
# CMakeList single-source
|
|
test_files = all_files(single_source_dir, '.swift')
|
|
tests = sorted(os.path.basename(x).split('.')[0] for x in test_files)
|
|
|
|
|
|
# CMakeList multi-source
|
|
class MultiSourceBench(object):
|
|
def __init__(self, path):
|
|
self.name = os.path.basename(path)
|
|
self.files = [x for x in os.listdir(path)
|
|
if x.endswith('.swift')]
|
|
|
|
|
|
multisource_benches = [
|
|
MultiSourceBench(os.path.join(multi_source_dir, x))
|
|
for x in os.listdir(multi_source_dir)
|
|
if os.path.isdir(os.path.join(multi_source_dir, x))
|
|
] if os.path.isdir(multi_source_dir) else []
|
|
|
|
|
|
def get_run_funcs(filepath):
|
|
content = open(filepath).read()
|
|
return re.findall(r'func run_(.*?)\(', content)
|
|
|
|
|
|
def find_run_funcs():
|
|
swift_files = all_files(single_source_dir, '.swift')
|
|
swift_files += all_files(multi_source_dir, '.swift')
|
|
return sorted([func for f in swift_files for func in get_run_funcs(f)])
|
|
|
|
|
|
all_run_funcs = find_run_funcs()
|