Revision 8a185bfafb95254fd0ffa59a10d2daf6d8f9f445 authored by Mishal Shah on 11 October 2017, 01:54:44 UTC, committed by Mishal Shah on 25 October 2017, 07:20:28 UTC
1 parent 1d8e0af
Raw File
gyb_benchmark_support.py
# ===--- 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()
back to top