知名基准测试一览:

序号 基准测试名称 用途 开源 日期 链接 许可证
1 SPEC CPU® 2006 测试计算机系统的整数和浮点运算性能,广泛用于编译器和处理器评估。 SPEC
2 SPEC CPU® 2017 更新版的 SPEC CPU 套件,测试计算密集型负载在现代 CPU 系统上的表现。 SPEC
3 SPEC ACCEL® 2023 测试 OpenACC 和 OpenMP 目标卸载 API 的并行应用程序性能。 SPEC
4 MiBench 针对嵌入式系统的免费商业应用程序基准测试套件,包含六大类应用程序。 2001 https://vhosts.eecs.umich.edu/mibench/source.html GPL
5 EMBENCH 为嵌入式系统设计的现代开源基准测试,替代 Dhrystone / CoreMark。 2017 https://github.com/embench/embench-iot GPL-3.0
6 CBENCH 基于 MiBench 的嵌入式基准集合,常用于评估编译优化效果。 2018 https://github.com/aorogat/CBench Apache-2.0
7 PolyBench 嵌套循环程序集合,用于研究循环优化,如循环变换、嵌套等。 2016 https://github.com/MatthiasJReisinger/PolyBenchC-4.2.1 Ohio
8 NAS Parallel Benchmarks (NPB) 并行计算基准程序集合,由 NASA 开发,广泛用于高性能计算研究。 https://www.nas.nasa.gov/software/npb.html NOSA
9 LMBench 微基准测试工具,测试系统延迟、内存、进程管理等性能。 1996
10 IOZone 文件系统性能测试工具,适用于多平台文件 I/O 分析。
11 STREAM 测试内存带宽的简洁基准程序,用于衡量内存子系统性能。
12 SPECjvm2008 测试 Java 虚拟机性能的一组应用程序集合。
13 SPECpower_ssj2008 测试服务器负载下的性能与功耗比(能效)。
14 SPEC SFS® 2014 模拟文件服务器(NFS 等)负载,用于测试 I/O 服务器性能。
15 Phoronix Test Suite 开源测试平台,提供系统、图形、I/O、处理器等多方面的基准集合。
16 Fio 高度可配置的 I/O 性能测试工具,广泛用于存储系统的基准分析。
17 Bonnie++ 测试文件系统数据吞吐、随机读写、查找性能等。
18 TPC-C 模拟在线事务处理的数据库性能测试标准。
19 TPC-H 决策支持系统的数据库基准测试,含复杂 SQL 查询和分析。
20 PARSEC 并行多线程程序集,评估多核系统性能表现,常用于编译器研究。
21 Rodinia 面向异构系统(如 GPU)的高性能计算程序集合,涵盖图处理、科学计算等。 2016 https://github.com/kiliakis/gpu-rodinia-3.1 Virginia
22 Gromacs 用于分子动力学模拟的基准测试,广泛用于科学计算中。 1991 https://www.gromacs.org GPL-2.0
23 HPCG 用于高性能计算(HPC)系统的基准测试,专注于并行性能。 2014 https://www.hpcg-benchmark.org/ BSD
24 Sequoia 主要用于并行计算性能评估,适用于大规模并行系统。 https://github.com/StanfordLegion/Sequoia BSD-3.0
25 C-ray 基于光线追踪的基准,测试CPU在计算机图形渲染中的性能。 2018 https://github.com/dvdhrm/c-ray MIT
26 Alderley 多线程的CPU基准,专注于多核和多线程处理性能评估。 2020 https://github.com/berkeleylab/alderley BSD-3.0

SPEC 的一些基准测试可以申请非商用许可证,但是基本都含有:==材料仅可用于生成关于计算机系统性能的测量和分析数据==,所以慎用!

提供一个爬取 git 上 benchmark 信息的脚本:

import requests
import argparse

GITHUB_API = "https://api.github.com/search/repositories"

headers = {
    # "Authorization": "token YOUR_GITHUB_TOKEN"
}

def search_benchmark_repos(languages):
    all_results = {}
    for lang in languages:
        params = {
            "q": f"benchmark language:{lang} in:name,description,topics",
            "sort": "stars",
            "order": "desc",
            "per_page": 100
        }
        response = requests.get(GITHUB_API, params=params, headers=headers)
        if response.status_code == 200:
            data = response.json()
            for repo in data["items"]:
                key = repo["html_url"]
                if key not in all_results:
                    all_results[key] = {
                        "name": repo["full_name"],
                        "stars": repo["stargazers_count"],
                        "desc": repo["description"] or "",
                        "url": repo["html_url"],
                        "updated": repo["updated_at"]
                    }
        else:
            print(f"❌ Failed to fetch for language {lang}: {response.status_code}")
    
    # 按 star 排序并输出
    sorted_repos = sorted(all_results.values(), key=lambda x: x["stars"], reverse=True)
    for repo in sorted_repos:
        print(f"{repo['name']} | 🌟 {repo['stars']} | {repo['desc'][:60]} | 🔗 {repo['url']} | 📅 {repo['updated']}")

def parse_args():
    parser = argparse.ArgumentParser(description="Search GitHub benchmark projects by multiple languages.")
    parser.add_argument(
        "--languages", 
        nargs="+", 
        default=["C", "C++", "Fortran"],
        help="List of programming languages (e.g. --languages C C++ Fortran)"
    )
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_args()
    search_benchmark_repos(args.languages)